- ベストアンサー
マクロ
すいません。以下2点わかりませんので、ご存知の方いましたら、教えて下さい。 Range("D6").Value=のような場合D6を文字列として、D7、D8・・・D100というようにループにして回したい場合どうやってやったらよいのでしょうか?文字列と文字列を足し合わせる場合の記述方法も含めて教えて下さい。 また VLOOKUP(M6,データ集!D5:F15,3)のうちD5:F15というような範囲を表す場合の記述ではエラーがでてしまいます。 どうしたらよいのでしょうか?
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 まず1番目から。 ループをまわすときは、基本的にRangeよりCellsを使います。そのほうが数値による指定がしやすいからです。 For i = 1 to 100 Cells(i,4).value = i Next i といった感じですね。 2番目のご質問の件ですが 数式をセルに入力するには、 Option Explicit Sub test() Range("A1").Formula = "=VLOOKUP(B1,D1:F7,2,FALSE)" End Sub といった感じですね。
その他の回答 (4)
- imogasi
- ベストアンサー率27% (4737/17069)
別のやり方を1つ。 Sub test01() Dim cl As Range i = 1 For Each cl In Range("a1:a100") cl.Value = i i = i + 1 Next End Sub '---- 文字列の結合(本ではお勧めではないらしい方法) Sub test02() Cells(1, 1) = Cells(2, 1) + Cells(3, 1) End Sub '----- VBAでVlookup関数を使うときは、 (1)Application.WorksheetFunction.にすること (2)A1やC1:C10などの表記はRangeの表記に 改めること。 (3)下記はワークシートの関数式のように、即座反応方式ではありません。バッチ処理的になります。 オフコード行があるとエラーになりますが手当てはしてません。 Sub test03() For i = 1 To 5 Cells(i, "B") = Application.WorksheetFunction.VLookup(Cells(i, 1), Range("c1:d10"), 2, False) Next i End Sub
- TTak
- ベストアンサー率52% (206/389)
For i = 1 To 100 Range("D" & i).Value = i Next i これでいけます。結合には"&"(アンバサンド)を使います。また、 For i = 1 To 100 Cells (i,4).Value = i Next i でも同じ結果です。 VLOOKUP関数のエラーですが、どのようなエラーでしょうか?ワークシート上でのエラーでしょうか? ちなみにワークシート上での#N/Aエラーの場合は、 検索値が 範囲の左端の列の最小値より小さい場合 検索の型 に FALSE を指定し、検索値が見つからない場合 が考えられます。
- taknt
- ベストアンサー率19% (1556/7783)
a=1 Range("D" & a ).Value= あとは aの値を変えていけばOK VBは、文字列と数値の場合、自動的に変換して 結合してくれます。 エラーは =IF(ISERROR(VLOOKUP(M6,データ集!D5:F15,3)),"",VLOOKUP(M6,データ集!D5:F15,3)) で表示されないでしょう。
シート関数(VLOOKUP等)は苦手なので、ループと文字列操作に関して。 ループの範囲はD6~D100などと決まっていますか? それとも、例えばA列に値が設定されている間はループするとかでしょうか? 決まっている場合は、#1のhappypointさんのおっしゃるFor~Nextで。 決まっていない場合は (例としてA列が設定されている間ループ、 B列とC列を足してD列に表示する、とします。) Dim lngRow As Long lngRow = 6 Do Until IsEmpty(Cells(lngRow,1)) Cells(lngRow,4).Value = Cells(lngRow,2) & Cells(lngRow,3) Loop