• ベストアンサー

エクセル:マクロの話

エクセルのマクロを使って、以下のことを考えています。 どのようにプログラムを入れればいいですか? (マクロは、ほんの少ーーしだけわかる程度です) 今、1列目(A1~Z1)にある文字が入っているとします。 その中に、「○○」という文字が1つあるとします。 for文を使ってi=1~26にしてA1~Z1までひとつずつ「○○」 という文字が入っているか「検索」し、i+1行目のデータ をB1に入力することを考えています。 全部教えてくれたら大変ありがたいが、とりあえず 「検索」をどのようにするのか教えて欲しいです。 たぶん、if文を使うのかなーーと思っているのですが、 どのように使えばいいのかわかりません。 よろしくお願いします。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.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)

回答No.1

InStr 関数を使ってみてください。 ある文字列の中に、指定した文字列が含まれているかどうかを返してくれる関数です。 詳しくはヘルプでどうぞ。

shiritai
質問者

補足

問題間違えました。 1列目なので、A1~A26ですね。 で、たとえばA15が○○だったら、A16の中身を B1に入れたい、ということです。

関連するQ&A