人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

エクセルの質問です。
シート全体のデータのセル番地を取得する方法はあるでしょうか。

たとえば(1,A)に"あいうえお"があって、(1,B)は空白、(2,C)に"かきくけこ"がある場合に、

(1,A)"あいうえお"
(1,B)""
(2,C)"かきくけこ"

と一括して取得したいです。
シートには結合したセルも含まれている場合でもできるでしょうか。


●質問者: clinejp
●カテゴリ:コンピュータ
✍キーワード:あいうえお エクセル セル データ
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● n_y_a_n_t_a
●35ポイント

エクセルで、「何か入っている」or「何も入っていない」セルを選択する場合の常套手段は、

編集→ジャンプ…から、セル選択…で定数/空白のボタンをチェックすればいいのだが(マクロでも使用可能)、

データの入っているセルと任意の空白セルとの組み合わせは難しい気がする。

設問で空白の(1,B)を選択する意味ってなんですか。

またセルA2やB2は選択しないんですか。

http://www.hatena.ne.jp/(ダミー)

◎質問者からの返答

ありがとうございます。

なぜ、空白が必要かというと、営業報告書のようなデータを要素(項目)ごとに抽出して、1行にしたいからです。

この処理ですと空白行を単純に無視すればいいのだと思いますが、抽出した1行の文字データをもとのフォーマット(この場合もとの営業報告書)に再び戻したいのです。

セルの番地が取得できていないと復元は無理ですよね。

うまく説明できているかな・・・。

>>またセルA2やB2は選択しないんですか。

します。シート全体を対象にしたいのですが、

難しいですよね・・・。


2 ● SALINGER
●35ポイント

空白だと全てのセルを取得することになるので、スペースが入っているセルと解釈して、

IsEmpty関数を使って違うシートにアドレスを書き出すVBAです。

Sub Macro()
 Dim r As Range
 Dim i As Long
 Dim w1 As Worksheet
 Dim w2 As Worksheet
 
  'データのシートを指定
 Set w1 = Worksheets("Sheet1")
  '書き出すシートを指定
 Set w2 = Worksheets("Sheet2")
 
 i = 1
 For Each r In w1.UsedRange
 If Not IsEmpty(r.Value) Then
 w2.Cells(i, 1).Value = "(" & r.Row & "," & Mid(Cells(1, r.Column).Address, 2, _
 InStr(Cells(1, r.Column).Address, "1") - 3) & ")""" & r.Value & """"
 i = i + 1
 End If
 Next r
End Sub

http://q.hatena.ne.jp/

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ