• ベストアンサー

Excelでのマクロについての質問

ひとつの例ですが A1 佐藤 A2 山田 A3 田中 A4 高橋 A5~A10 空白 B1 山下 B2 田代 B3 吉田 B4~B10 空白 と元のデータが入力されているとします A1~A10,B1~B10に入力されるセル数は変化します 例えばA4~A7にデータがあり、B1~B10は空白という場合もあります ただし必ず上から順に入力されているとします C1~C10、D1~D10には [C1] =IF(A1<>"",A1&"君",""),[C2] =IF(A2<>"",A2&"君","") ・・・ [D1] =IF(B1<>"",B1&"君",""),[D2] =IF(B2<>"",B2&"君","") ・・・ というように元のデータを 加工するための数式が入力されています マクロが登録されているボタンを押すと E1から下方向へC1,C2,C3,C4,D1,D2,D3,(以後空白)と C1~C10、D1~D10の順に空白を除いた「値」が入力されるよう マクロを組むにはどうすればいいでしょうか

質問者が選んだベストアンサー

  • ベストアンサー
  • watabe007
  • ベストアンサー率62% (476/760)
回答No.2

C1~C10、D1~D10と順にデータの有無をチェックして データが有ればE列に転記します。 Sub test()   Dim c As Range, i As Long   For Each c In Range("C1:C10,D1:D10")     If c.Value <> "" Then       i = i + 1       Cells(i, "E").Value = c.Value     End If   Next End Sub

asclepius
質問者

お礼

どうもありがとうございます。 すっきりしててよいですね

その他の回答 (1)

  • hige_082
  • ベストアンサー率50% (379/747)
回答No.1

こんな感じ? Sub test() Dim ran As Range Dim i As Integer Dim mRow As Integer, mCol As Integer i = 1 For mCol = 3 To 4 For mRow = 1 To 10 If Cells(mRow, mCol).Value <> "" Then Range("e" & i).Value = Cells(mRow, mCol).Value i = i + 1 End If Next mRow Next mCol End Sub 初歩的なコードで組んでいるので、解説はなし この機会に勉強されては

asclepius
質問者

お礼

どうもありがとうございました。勉強してみます。

関連するQ&A