エクセルの質問です。

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

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

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

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

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:2008/03/22 10:28:45
  • 終了:2008/03/29 10:30:03

回答(2件)

id:n_y_a_n_t_a No.1

n_y_a_n_t_a回答回数6ベストアンサー獲得回数02008/03/22 13:24:30

ポイント35pt

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

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

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

  

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

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

  

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

id:clinejp

ありがとうございます。

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

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

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

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

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

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

難しいですよね・・・。

2008/03/22 14:15:53
id:SALINGER No.2

SALINGER回答回数3454ベストアンサー獲得回数9692008/03/22 14:20:41

ポイント35pt

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

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/

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません