• ベストアンサー

excel VBAについての質問です

はじめまして。 A列に、特定の文字列を含むセルがあった場合にその右下のセルを選択するにはどうしたらいいでしょうか?  例えば、セル(A5)に「エクセル」という文字列があった場合に、セル(B6)を選択したいのです。また、そしてA列には「エクセル」を含むセルがいくつかあり、それらセルについてもそれぞれの右下のセルを選択させたいのですが・・・。

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.6

#03です。補足要求には回答いただけないようですね とりあえず#01さんの補足をみてVBAを修正しました アクティブなシートのA列の「エクセル」を含むセルの右下のセル(複数ありえる)をSheet2のA1セルを起点に貼り付けるようにしました Sub Macro2() Dim adrs As String Dim idx As Long For idx = 1 To Range("A65536").End(xlUp).Row   If InStr(Cells(idx, "A").Value, "エクセル") > 0 Then     adrs = adrs & Cells(idx, "A").Address & ","   End If Next idx If Len(adrs) > 0 Then   Range(Left(adrs, Len(adrs) - 1)).Offset(1, 1).Copy _      Destination:=Sheets("Sheet2").Range("A1") End If End Sub

zenzendame
質問者

補足

上のマクロを使うと、うまくいきました。ありがとうございます。 ただ、もうひとつ。選択したセルはそれぞれ"00001111商品名 単位・・・)などと長い文字列なのですが、その中で00001111の部分だけ抜き取って貼り付けするようにはできるのでしょうか? 初心者で申し訳ありません。皆さんの知識には感服します。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (5)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんばんは。 >選択した後にコピーして別のシートに貼り付けしたかったんです。 Sub TestMarco1()   Dim r As Range   Dim c As Range   Dim i As Long   Dim PasteRng   '検索語   Const SWORD As String = "エクセル"   'ペースト先-先頭セル   Set PasteRng = Worksheets("Sheet2").Range("A1")   With ActiveSheet   If .AutoFilterMode Then     .AutoFilterMode = False   End If      On Error GoTo ErrHandler   With .Range("A1").CurrentRegion.Columns(1)     .AutoFilter Field:=1, Criteria1:=SWORD     Set r = .Offset(1).Resize(.Rows.Count - 1). _        SpecialCells(xlCellTypeVisible)     .AutoFilter   End With   i = 1      If .Range("A1").Value = SWORD Then    .Range("A1").Offset(1, 1).Copy PasteRng.Cells(i, 1)    i = i + 1   End If   For Each c In r.Cells     c.Offset(1, 1).Copy PasteRng.Cells(i, 1)     i = i + 1   Next c ErrHandler:   If Err.Number > 0 Then     .AutoFilterMode = False     MsgBox SWORD & " は見つかりません"   End If   End With   Set r = Nothing   Set PasteRng = Nothing End Sub

全文を見る
すると、全ての回答が全文表示されます。
  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.4

>についてもそれぞれの右下のセルを選択させたいのですが・・・。 選択して何もしないで次ぎに行っても何にもならないが、処理の説明を省略したの? Findメソッドでやる場合もあるが、初心者には難しい。 それでMATCH関数でやってみたが、やはり難しい。参考までに。 Sub test05() On Error GoTo ext1 d = Range("A65536").End(xlUp).Row s = 1 mg = 0 Do Set x = Range("A" & s & ":A" & d) g = Application.WorksheetFunction.Match("エクセル", x, 0) mg = mg + g Cells(mg, "A").Offset(1, 1).Select MsgBox mg s = mg + 1 If s > d Then GoTo ext1 Loop ext1: End Sub ーー 全行IF文でエクセルか聞いていくのが、単純で良さそう。

全文を見る
すると、全ての回答が全文表示されます。
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

補足要求です 1)特定の文字列を含むセル 部分一致の「エクセル」「マイクロソフトエクセル」「エクセル・ワード」のセルも対象ですか? それとも完全一致のセルだけが対象ですか? 2)それらセルについてもそれぞれの右下のセルを選択させたい 仮に「エクセル」を含むセルが3つあったとします。その場合、同時に右下の3つのセルを同時に選択した状態にするのですか? (それにはどんな意味があるのでしょうか?) 全ての部分一致セルの右下セルを同時に選択するならこんなマクロでもできますが… Sub Macro2() Dim adrs As String Dim idx As Long For idx = 1 To Range("A65536").End(xlUp).Row   If InStr(Cells(idx, "A").Value, "エクセル") > 0 Then     adrs = adrs & Cells(idx, "A").Address & ","   End If Next idx If Len(adrs) > 0 Then   Range(Left(adrs, Len(adrs) - 1)).Offset(1, 1).Select End If End Sub

zenzendame
質問者

補足

すみません。補足要求に回答いたします。 1)部分一致のセルも対象です。 2)同時に3つのセルを選択した状態にしたいです。

全文を見る
すると、全ての回答が全文表示されます。
  • nekoron07
  • ベストアンサー率37% (69/184)
回答No.2

細かい条件がわからないのですが、とりあえず作ってみました。 ※A列には常にデータが入っているのでしょうか。それとも「エクセル」のほかは空白? → とりあえずA列には何かデータが入っているものとして、A列に空白が出るまで作業を続けるようになってます。 ※A列に「エクセル」の文字列があったとき、その右下のセルに対してしたい処理は? → とりあえず「1」が入力されるようになっています。 Sub Macro()   Range("A1").Select   Do While ActiveCell <> ""    If ActiveCell = "エクセル" Then     ActiveCell.Offset(1, 1).Range("A1").Select     ActiveCell = 1     ActiveCell.Offset(0, -1).Range("A1").Select    Else     ActiveCell.Offset(1, 0).Range("A1").Select    End If   Loop End Sub

全文を見る
すると、全ての回答が全文表示されます。
noname#123709
noname#123709
回答No.1

以下のような感じでもできます。 ただ、何の為の選択でしょうか?選択するだけの動作に意味があるのでしょうか? Sub test() Dim i As Long Dim j As String For i = 1 To Range("A65536").End(xlUp).Row If Cells(i, 1).Value = "エクセル" Then If j = Empty Then j = Cells(i + 1, 2).Address j = j & "," & Cells(i + 1, 2).Address End If Next i If j <> Empty Then Range(j).Select End Sub

zenzendame
質問者

補足

>ただ、何の為の選択でしょうか?選択するだけの動作に意味があるのでしょうか? 説明不足で申し訳ございません。選択した後にコピーして別のシートに貼り付けしたかったんです。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • エクセルのVBAについて質問です。

    エクセル2003のVBAについて質問です。 複数の検索したい文字列があり、複数の検索対象セルがあります。 セルの文字列が検索文字列のいずれかと一致したセルの背景の色を変えたいです。 よろしくおねがいします。 仕事でマクロを組まなけばならなくなってしまったのですが、 初心者のため検索してみたり調べてみたり、参考にして作ってみたのですがうまくいかないばかりかどんどん解らなくなってしまいました。 どうか助けてください。 sheet1のセルが検索対象 (全セル対象でも大丈夫ですが、検索したいセルはB2→J2、B11→J11、B20→J20の範囲です)、 sheet2のA列に検索したい文字列が入力されています。 この検索したい文字列は今後増えていく可能性があるので、増えた場合にも対応できるようにと考えています。 sheet1(検索対象) あ い う え あ お お sheet2(検索文字列) あ う お け き ↑の様に入力されており、sheet1の「あ」と「う」と「お」のセルの背景を変えたいです。 色を変えたいのはsheet1です。 findメソッドや繰り返し処理などを調べて実践してみたのですが、 いきなりマクロを組めといわれた超初心者には難しく質問しています。 自分でやってみたのですが、 sheet1の最初の「あ」のみが変換され、後に出てくる「あ」が変換されません… どうしたらいいのか…どうすることも出来ず困っております。 すみませんが、どなたか優しい方助けてください。 よろしくおねがいします><

  • エクセル VBAで入力

     エクセル初心者です。 条件付き書式で一つのセルに特定の文字列を入力した際に、そのセルと任意の法則性のある複数のセルに(入力内容は無関係でセルの行・列に法則性があります)特定の塗りつぶしを行いたいのですが、どのようにすればよいのでしょうか。 条件付き書式をすべて設定する(手打ち)するのが最も確実で間違いの内方法ではありますが、新規に行・列を挿入した場合、その行・列には条件付き書式が設定されていませんので、意図した作用を起こさなくなってしまいます。 上記ではよくわからないと思いますので、具体的な例を入れさせていただきます。 例)) 任意のセル(A13)に特定の文字列(OK)と入力する。 特定文字列に反応して、そのセルの列に(A12からE12、F12からH12)赤色の塗りつぶしを入れる。 上記は1セルに対して行われますが、VBAを使用してA12からA5000までを検索対象として持たせて、それぞれのセルの列に対して塗りつぶしを入れられるようにしたいと思っています。

  • エクセルVBAでセル選択

    エクセル2000でリストを作成し、VBAで編集しようとしています。 A列に入力されているコードの先頭に「’」をつけて文字列とするための関数をB2のセルからA列のデータが入力されている最後のセルの隣までコピーしたいと思っています。 A列の最終セルを取得するVBAは分かったのですが、その値をB列の選択範囲として使用する方法がわかりません。 エクセルVBAは全くの初心者です。 どなたか教えてください!

  • エクセルで「○なら△」の条件式を3つ入れたい

    エクセル2003を使用しています。 あるセルは、「リストから選択」するようにして、“A”、“B”、“C”という3つの文字列から選択するようにしています。 その場合、その上のセルに、 “A”ならば“a”、“B”ならば“b”、“C”ならば“c”、という“a”、“b”、“c”という3つの文字列が自動的に入るようにしたいのです。 お分かりの方、どうぞ宜しくおねがいします。

  • VBA 文字列→検索→置き換え

    Excel 2007です。 VBAで、特定のレンジのセルから、特定のセルに入った文字列を検索して削除するにはどうしたらよいでしょうか? 具体的にはB2:B100の中にあるA1セル内の文字列を削除する。といった感じです。 よろしくお願い致します。

  • エクセルで・・・

    エクセルのシートB(特定の列)にある文字列がきたらシートAの一部のセルにCCC という文字を挿入したいのですが、どうしたらできるのでしょうか?

  • EXCELの質問についてです。

    EXCELの質問についてです。宜しくお願いします。 あるセル(例:A1)に文字列が入っています。 他のセル(例:A1)に文字列が入っています。 これを、比較して先頭数文字が同じ場合、 他のセルの文字列全てを表示したいのですが、 どの様にしたら良いでしょうか? ちなみに、IFでその文字列が(真)ならそのセル(B1) を表示とかやりたいのですが… 初心者的質問で申し訳ないのですが、何方かどうかご教授お願致します。

  • 【VBA】フォルダ内の複数Excelのセルをコピー

    お世話になります。 初級者ですが、Excel 2002のVBAについてご質問をさせて頂きます。 【概要】  あるフォルダ内にある複数のExcelファイルの、特定のセルを  1つのExcelファイルに集約します。 【詳細】  1.あるフォルダ内に複数のExcelファイルがあります。Excelファイルの数は、その日によって   ことなります。  2.選択画面から、この複数のExcelファイルを選択し、選択したExcelファイルの   それぞれの「A1セル」「B1セル」「C1セル」を、「1つのExcelファイル」に張り付けます。  3.「貼り付け」→「次の列へ移動」→「貼り付け」→「次の列へ移動」というサイクルを、   選択したExcelファイルの数だけ繰り返します。  4.集約したExcelファイルのイメージは以下のとおりです。        A列 B列 C列 D列 E列 F列 G列 H列  。。。。   1行目 A1 A1 A1 A1 A1 A1 A1 A1 。。。。   2行目 B1 B1 B1 B1 B1 B1 B1 B1 。。。。   3行目 C1 C1 C1 C1 C1 C1 C1 C1 。。。。 教えて!gooの回答で、「複数のシートを、1つのExcelファイルに集約する」ものがあったので、 それを参考にしようとしましたが、僕の実力ではできませんでした。 ご助言を頂けると非常に助かります。よろしくお願いします。

  • エクセルVBAについて質問です。

    エクセルVBAについて質問です。 シート1のユーザーフォームにコンボボックスとテキストボックスが各1つずつ、 シート2のA列には1行目から順に「あ」「い」「う」と文字が入っていて、B列には「1」「2」「3」と値が入っています。 コンボボックスのリストにはシート2のA列の文字が選択できる状態にあります。 この状態で、例えばコンボボックスで「い」を選んだら、テキストボックスに自動的に「2」と入る、というように、コンボボックスのリストの中から任意の文字を選択したときに、テキストボックスにB列の値が入るようにするにはどのようにすればいいのでしょうか?よろしくお願いします。

  • エクセル2010のマクロについての質問です。

    エクセルにてマクロを組もうと色々調べているのですが、 どうしてもわからないため教えていただきたいことがあります。 現在、マクロを実行すると固有の文字をアクティブセルに挿入するというマクロを作成しました。 このマクロを少し改造したいのですが、A1とB1に=のものが入っている行の特定の列のセルに固有の文字を挿入するという風にしたいです。 例えば、Aの列にはA1には1、A2には2という風に順に10間での数字が入っていて、 B1には9が入っている場合、C9のセルに固有の文字を挿入するという感じです。 B1を7に変えた場合、C7に固有の文字が挿入されるという感じにしたいです。 質問の仕方が下手でわかりにくいかも知れませんがお知恵をお貸しください。 よろしくお願いします。

このQ&Aのポイント
  • AE-10の音質を向上させる方法について教えてください。尺八の音をもっと原音に近づけることは可能でしょうか?
  • AE-10の音質改善に関するお悩みです。尺八の音をよりリアルに再現するための設定や方法について教えてください。
  • AE-10の音質を尺八の原音に近づける方法について質問があります。尺八の音色をより自然なものにするためのアドバイスをお願いします。
回答を見る

専門家に質問してみよう