• ベストアンサー

エクセルVBAの記述について

OSはWin98、エクセル2000です。 次の処理をVBAで処理したいのですがうまく作動しま せん。 ご教授願います。 セルA1から下に向かって1から20までランダムに数 値が入ってます。 同じ数値は無く、数値も3行(セルA3)で終わる場合 も有ります。 この場合セルC1から下に向かって順にA1&A2、A 1&A3と記述したいのですが・・・ 例) A1に5、A2に7、A3に15、A4に10でしたら C1に57、C2に515、C3に510、C4に715 C5に710、以下・・・と記述 よろしくお願いします。m(_ _)m

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

  • ベストアンサー
  • jukate
  • ベストアンサー率25% (14/56)
回答No.5

Sub test2() Dim m, n, k, h, a, b As Integer Dim txt As String For k = 1 To 30 If Sheet1.Cells(k, 1) = "" Then h = k - 1 GoTo line1 End If Next k line1: For n = 1 To h - 3 For m = 1 To 3 Sheet1.Cells(m + 3 * n - 3, 3) = Sheet1.Cells(n, 1) & Sheet1.Cells(m + n, 1) Next m Next n End Sub 'ちょっと失敗しました。希望通りか知りませんが。 '最後のセルは空白としてそこから-1して後はエラーでないようにしてください。

seikei1314
質問者

お礼

何回もご親切にありがとうございました。 早速コピーさせてもらいました。 発想が大きなヒントになりました。 本当にありがとうございました。

その他の回答 (4)

  • jukate
  • ベストアンサー率25% (14/56)
回答No.4

Sub test2() Dim m, n, k, h As Integer For k = 1 To 10 If Sheet1.Cells(k, 1) = "" Then h = k - 1 '←ここら辺りは適当に GoTo line1 End If Next k line1: For n = 1 To 10 For m = 1 To 3 Sheet1.Cells(m + 3 * n - 3, 3) = Sheet1.Cells(n, 1) & Sheet1.Cells(m + n, 1) Next m Next n n = h For m = 1 To 3 Sheet1.Cells(m + 3 * n - 3, 3) = Sheet1.Cells(n, 1) '←ここら辺りは適当に(2) Next m End Sub '正直どうしたいのかはわかりません。 '←ここら辺りは適当に(2)を『""』とかでしょうか?

  • jukate
  • ベストアンサー率25% (14/56)
回答No.3

Sub test2() Dim m, n, k As Integer For n = 1 To 10 For m = 1 To 3 Sheet1.Cells(m + 3 * n - 3, 3) = Sheet1.Cells(n, 1) & Sheet1.Cells(m + n, 1) Next m Next n End Sub

seikei1314
質問者

補足

早速ありがとうございました。うまくいきます。 発想がすぐ浮かんでうらやましいかぎりです。 質問の質問ですみませんがセルA列の最後の数値には &が不要の場合はどうなるでしょうか。 もしよろしかったら教えて下さい。

  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.2

'同じ数値は無く、数値も3行(セルA3)で終わる場合 も有ります。 'ということなので Sub test2() Gyou = Cells(21, 1).End(xlUp).Row For I = 1 To Gyou - 1 Cells(I, 3) = Cells(1, 1) & Cells(I + 1, 1) Next End Sub

seikei1314
質問者

補足

早速回答ありがとうございます。 書き方が悪くてすみません。 補足させていただきますと、セルA1からの記述が終わっ たら次はセルA2&セルA3、セルA2&セルA4という 具合に順に降りていきます。 ご回答ですとセルA2からの&で終わってしまうので・・ よろしくお願いします。(>_<)

  • nihonjinn
  • ベストアンサー率39% (79/200)
回答No.1

Sub test() For I = 1 To 20 Cells(I, 3) = Cells(1, 1) & Cells(I + 1, 1) Next End Sub 'でどうですか。

seikei1314
質問者

お礼

お手数をおかけしました。 なんとかできそうです。 ご親切にありがとうございました。 まだVBAは初心者でデバックの連続です。 またお願いします。

seikei1314
質問者

補足

早速に2回答もすみません。 NO.2にも記述しましたが、セルA1に5、A2に7 A3に3、A4に10ですと、C1に57以下53、510、73、710、310で終了となります。 最後の数値に&は必要ありません(この場合は10) よろしくお願いします。