マクロ(VBA)の書き方を教えて下さい。 ExcelシートのB列に8桁の数字がランダムに並んでおり、その数字の4桁目と5桁目の数(2桁の数)が4~40の場合だけC列に代入させたいです。

画像

Visual Basic | Excel73閲覧xmlns="http://www.w3.org/2000/svg">50

ベストアンサー

1

1人がナイス!しています

ご教示頂き有難う御座います。 すみません、私の説明不足でした。 C列には2桁の数字(4~40)だけを転記させたいです。 その場合どのように書いたら良いでしょうか。

ThanksImg質問者からのお礼コメント

有難う御座います。 For Eachは使った事がなかったので早速調べました。 大変勉強になりました。

お礼日時:5/26 21:48

その他の回答(1件)

1

こんなかんじかなと Sub 四桁が4_40なら転記2() Dim startAddress As Variant, endAddress As Variant startAddress = "B2" endAddress = Cells(Rows.Count, "B").End(xlUp).address Dim i As Long, j As Long For i = 2 To range(endAddress).row i = i + 1 Dim cellValue As Variant cellValue = Mid(Cells(i, 2), 4, 2) If cellValue >= 4 And cellValue <= 40 Then Cells(i, 3) = cellValue End If Next End Sub 8桁入力が面倒だったので自動入力版 Sub 四桁が4_40なら転記自動入力版() Dim startAddress As Variant, endAddress As Variant Cells(15, 2) = "あ" startAddress = "B2" endAddress = Cells(Rows.Count, "B").End(xlUp).address range(startAddress & ":" & endAddress).ClearContents range("C3:" & endAddress).ClearContents Dim rndMember As Long Dim i As Long, j As Long i = 1 For i = 2 To range(endAddress).row rndMember = Int(Rnd * 100000000) Cells(i, 2) = rndMember Next For i = 2 To range(endAddress).row i = i + 1 Dim cellValue As Variant cellValue = Mid(Cells(i, 2), 4, 2) If cellValue >= 4 And cellValue <= 40 Then Cells(i, 3) = cellValue End If Next End Sub

1人がナイス!しています

2つもご教示頂き有難う御座います。 上段の四桁が4_40なら転記2の方は「i = i + 1」を削除すれば無事に使用出来ました。 下段の四桁が4_40なら転記自動入力版は使用してみましたところ、データがぐちゃぐちゃになってしまいました。これはどのように使用したらよろしいでしょうか。