• 締切済み

【VBA】該当する文字列がある列を削除したい。

指定した文字列を検索して、そのセルのある列削除したいです。 例えば2行目に、表の項目として「社名、フリガナ、住所、電話番号、備考、・・・」 と、あるときに、フリガナと電話番号の列を削除させたいのです。 シートによって項目の位置が若干変わる為、列番号を指定して削除するようなことは出来ません。 項目の名前が変わることはありません。 vbaでどのようにすればよいのでしょうか。 また、2行目の範囲で文字列を検索して、該当する文字列があるセルの位置情報を 取得したい場合はどうすれば良いでしょうか? 宜しくお願いします。

みんなの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.3

(1)総なめのIF文で聞く方法 (2)Findメソッド が回答に出ているので (3)Match関数法を挙げます Sub test01() c = Application.WorksheetFunction.Match("フリガナ", Range("A1:IV1"), 0) MsgBox c End Sub E1に「フリガナ」という見出しがあるとき、5と表示され、第5列であることが捉えられます。 ーー 見つからない場合がある場合は Sub test01() On Error GoTo er1 c = Application.WorksheetFunction.Match("フリガナ", Range("A1:IV1"), 0) MsgBox c Exit Sub er1: MsgBox "見つかりません" End Sub

  • keirika
  • ベストアンサー率42% (279/658)
回答No.2

Sub Sample() Dim i As Integer For i = 1 To 256 If Cells(2, i) = "フリガナ" Or Cells(2, i) = "電話番号" Then Cells(2, i).EntireColumn.Delete End If Next i End Sub でどうでしょう

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.1

削除は Sub test01() Dim ar ar = Split("フリガナ、電話番号", "、") For i = LBound(ar) To UBound(ar) Rows("2:2").Find(What:=ar(i), LookIn:=xlValues).EntireColumn.Delete Next End Sub "フリガナ、電話番号"の部分を”、”で区切って増やせばいくつでも対象を増やせますよ。 削除せず、アドレスの取得なら Sub test02() Dim ar ar = Split("フリガナ、電話番号", "、") For i = LBound(ar) To UBound(ar) MsgBox Rows("2:2").Find(What:=ar(i), LookIn:=xlValues).Address Next End Sub

関連するQ&A

  • エクセルで同じ文字列が入った行を削除したい

    現在エクセルで3000個近くの文字列(社名)の入ったセルが個々にあります。 しかし、現在12,000セルくらい、上記の社名等が入ったセルがあるため、 同じ文字列(社名)がはいったセルを削除して、正式に何個の社名があるかをしりたいのです。 よって、列を読み込んで、同じ文字列がはいった行を抜粋して削除し、1社だけのこしていく方法は ないのでしょうか? フィルタ等でもひとつひとつ読み込んで、一つだけ削除しても、セル数が多すぎてとても1日ではおわりません。 何か良い方法はないでしょうか?おしえてください。こまっています;

  • EXCELで文字検索したセルの行と前後の行の削除の方法

    EXCEL-VBAを使ってワークシートのデータ整形をしています。 ある文字列を検索し、その文字列を含む行とその前後の行を削除するロジックを記述したいのですがうまくできません。 例:検索文字列「合計」、"合計"の入っているセル「B120」のとき、B119~B121の3行分の行削除をしたい。 おそらく検索された文字列を含むセルの行番号を取得してその番号-1と+1の行を選択して削除すればよいのではないかと思ってるのですが、もっと良い方法があるのでしょうか? よろしくお願いします。

  • 特定文字列以下のセル削除

    こんにちは。 特定の文字列を含むセルから5行削除するマクロを作りたいのですが、 どのようにするとよいでしょうか。 特定文字列は、各列に1つあり、行の位置はバラバラです。 その特定文字列を含み以下5行分のセルを削除し、上に詰めたいと考えています。 初心者ゆえ、ご指導ください。

  • 文字列を削除したい。

    Stringの文字列をStringに移し特定の 文字を消したいと思っています。 調べたところdeleteというメソッドで。 開始位置と終了位置を指定すれば 削除できるみたいですが、 文字列を指定してその文字列を削除する、 という事はできますか? お願いします。

    • ベストアンサー
    • Java
  • VBA 文字列→検索→置き換え

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

  • 文字列検索しセルの位置が知りたい

    指定範囲内で文字列を検索し、見つかったセルの行番号、列番号を知りたいのです。 マクロでなく関数で出来るでしょうか?

  • VBAで左端文字を削除

    エクセル2002使用です。 A列に文字列が1~1000行まで入力されています。 文字列の左端に記号(1文字)が入力されているので削除したいのですが、 (○株式会社あいうえお)←○を削除したい VBAで下記のように記述したのですが、 実行時エラー424となります。 Sub 削除()  Dim i As Integer  For i = 1 To 1000 '行番号を変更  Left(Cells(i, 1).Value, 1).Delete '列番号を変更  Next End Sub よろしくお願いします。

  • GASで文字列を下から検索し2列目から該当列を削除

    Google sheetsのGASで特定文字列を下から検索し2行目から該当行までを削除する方法を探しています。 添付図のようにダウンロードするデータに余計な区分が入っており、GASで並べ替えを行うと上に集中するので、その余分な区分の文字を含むセルの最下限の行から2行目を選択範囲にして一気に消したいです 該当の文字列を判定して消す方法だと1行ずつの処理となり、タイムオーバーを吐きまくったので、結果的に余計な列をタイムオーバーを吐かせずに消せる方法ならば何でも良いです よろしくお願いします。 それとchatGPTでも答えは出ませんでしたので…

  • VBAでセル内の文字列を一行にする方法

    ExcelのVBAで、セル内に折り返しで3行に書かれている文字列を、各文字列間に空白を1つ入れて、1行につなげるにはどうしたらいいですか

  • VBA 文字が入力されているセルを表示させたい

    ExcelのVBAで 列番号"A列"に文字を適当に打った時 文字が入っている最終セル(行番号)と その最終セルに入っている文字を "C1"のセルに表示させる というVBAを作成したいのですガ… どなたかわかる方教えて下さい 自分が考えたものはVBAが妙に長くなってしまい; Excelのバージョンが2000と古いので 古いのでも動くVBAだと助かります; 宜しくお願いします

専門家に質問してみよう