- ベストアンサー
エクセル:マクロの話
エクセルのマクロを使って、以下のことを考えています。 どのようにプログラムを入れればいいですか? (マクロは、ほんの少ーーしだけわかる程度です) 今、1列目(A1~Z1)にある文字が入っているとします。 その中に、「○○」という文字が1つあるとします。 for文を使ってi=1~26にしてA1~Z1までひとつずつ「○○」 という文字が入っているか「検索」し、i+1行目のデータ をB1に入力することを考えています。 全部教えてくれたら大変ありがたいが、とりあえず 「検索」をどのようにするのか教えて欲しいです。 たぶん、if文を使うのかなーーと思っているのですが、 どのように使えばいいのかわかりません。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
通常検索にはFindメソッドを使いますが今回は検索する範囲が狭いのでFor~Next文でやってみます Sub Macro1() Dim idx As Integer For idx = 1 To 26 If Cells(idx, "A").Offset(1, 0).Value = "○○" Then Cells(idx, "B").Value = Cells(idx + 1, "A").Value End If Next idx End Sub 検索範囲が非常に多きときはFindメソッド、FindNextメソッドを使う方が高速でに処理できます Sub Macro2() Dim r As Range Dim adr As String Set r = Range("A1:A26").Find(What:="○○", LookIn:=xlValues, Lookat:=xlWhole) If Not r Is Nothing Then adr = r.Address Do r.Offset(0, 1).Value = r.Offset(1, 0).Value Set r = Range("A1:A26").FindNext(r) Loop Until r.Address = adr End If End Sub
その他の回答 (1)
- temtecomai2
- ベストアンサー率61% (656/1071)
InStr 関数を使ってみてください。 ある文字列の中に、指定した文字列が含まれているかどうかを返してくれる関数です。 詳しくはヘルプでどうぞ。
補足
問題間違えました。 1列目なので、A1~A26ですね。 で、たとえばA15が○○だったら、A16の中身を B1に入れたい、ということです。