エクセルVBAを使い、特定文字から始まっているデータを別シートに抽出がしたいです。
他の方が質問していた内容を参考に、特定文字が含まれていたら抽出することは以下で可能でした。
特定文字から始まっている場合にするには、どこを修正すればよいでしょうか。
ド素人の質問ですみませんが、ご回答お願いいたします!
Sub データ抽出()
'----- 設定事項 ------------
Const OrgSh = "Sheet1" ' <--- 基データのシート名
Const PicSh = "Sheet2" ' <--- 抽出先シート名
Const TopAdd = "B2" ' <--- 検索範囲の先頭(見出しを除く)
Const FindStr = "大阪府" ' < ---検索する文字列
'---------------------------
Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Dim Rng As Range
Dim First As String
Dim N As Long
Set Ws1 = Worksheets(OrgSh)
Set Ws2 = Worksheets(PicSh)
Ws2.Cells.ClearContents '抽出先シートをクリア
If Range(TopAdd).Row > 1 Then ' 見出し行があればコピー
Ws1.Range(TopAdd).Offset(-1).EntireRow.Copy Destination:=Ws2.Rows(1)
N = 1
End If
Set Rng = Ws1.Range(TopAdd).EntireColumn.Find(FindStr) '部分一致検索
If Not Rng Is Nothing Then
First = Rng.Address
Do
N = N + 1
Rng.EntireRow.Copy Destination:=Ws2.Rows(N)
Set Rng = Ws1.Range(TopAdd).EntireColumn.FindNext(Rng)
Loop Until Rng Is Nothing Or Rng.Address = First
End If
End Sub
No.2
- 回答日時:
とてもよくできたマクロだと思います。
[1]シート名OrgSh,PicShが無い場合にエラーが出てしまうと思いますので,シートの有無を検査するコードを追加してみました。
[2]コードを挿入した個所が分かるようにコメント文字の「追加」を入れました。
Sub データ抽出()
'----- 設定事項 ------------
Const OrgSh = "Sheet1" ' <--- 基データのシート名
Const PicSh = "Sheet2" ' <--- 抽出先シート名
Const TopAdd = "D2" ' <--- 検索範囲の先頭(見出しを除く)
Const FindStr = "内外" ' < ---検索する文字列
'---------------------------
Dim Ws1 As Worksheet
Dim Ws2 As Worksheet
Dim Rng As Range
Dim First As String
Dim N As Long
Dim FLAG As Boolean '追加
Call 追加(ThisWorkbook, OrgSh, FLAG) '追加
Select Case FLAG '追加
Case True '追加
Set Ws1 = Worksheets(OrgSh)
Call 追加(ThisWorkbook, PicSh, FLAG) '追加
Select Case FLAG '追加
Case True '追加
Set Ws2 = Worksheets(PicSh)
Ws2.Cells.ClearContents '抽出先シートをクリア
If Range(TopAdd).Row > 1 Then ' 見出し行があればコピー
Ws1.Range(TopAdd).Offset(-1).EntireRow.Copy Destination:=Ws2.Rows(1)
N = 1
End If
Set Rng = Ws1.Range(TopAdd).EntireColumn.Find(FindStr) '部分一致検索
If Not Rng Is Nothing Then
Select Case InStr(Rng, FindStr) '追加
Case 1 '追加
First = Rng.Address
Do
N = N + 1
Rng.EntireRow.Copy Destination:=Ws2.Rows(N)
Set Rng = Ws1.Range(TopAdd).EntireColumn.FindNext(Rng)
Loop Until Rng Is Nothing Or Rng.Address = First
Case Else '追加
End Select '追加
End If
Case False '追加
End Select '追加
Case False '追加
End Select '追加
End Sub
Sub 追加(W, SHEET_NAME, FLAG)
' シートの有無を検査します。
FLAG = False
For Each S In W.Sheets
Select Case S.Name
Case SHEET_NAME
FLAG = True
Exit For
Case Else
End Select
Next
End Sub
No.1
- 回答日時:
左端から指定した文字数を抜き出すLEFTと、文字の長さを返すLENを使えばよさそうです。
Left(対象語, Len(検索語)) を検索語と比較して一致したものを抽出すればよいとおもいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルVBAで教えて頂きたいのですが? 2 2022/12/31 20:28
- Visual Basic(VBA) VBAで教えて頂きたいのですが? 1 2022/04/29 02:36
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) エクセルVBAのコードで質問です。 下のコードはJ16の文字列をB3を起点とする範囲から探して、見つ 5 2023/04/07 11:07
- Visual Basic(VBA) ExcelVBAに関する質問 3 2023/02/17 10:47
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Excel(エクセル) 製品番号での整列と、検索に関して 3 2023/06/28 19:20
- Visual Basic(VBA) Excelで下記のようにマクロを作ったところ、一回目は実行できたのですが、二回目以降「実行時エラー1 1 2022/03/25 08:08
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- Excel(エクセル) エクセルシート中の全角英数字を半角に変換したい 4 2022/07/07 13:14
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
人生最悪の忘れ物
今までの人生での「最悪の忘れ物」を教えてください。 私の「最悪の忘れ物」は「財布」です。
-
【お題】マッチョ習字
【大喜利】 「精神を鍛えるため」にと、ジムから書初めの宿題を出されたマッチョたちが半紙に書いてきたこと
-
【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
「出身中学と出身高校が混ざったような校舎にいる夢を見る」「まぶたがピクピクしてるので鏡で確認しようとしたらピクピクが止まってしまう」など、 これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
-
我が家のお雑煮スタイル、教えて下さい
我が家のお雑煮スタイル、教えて下さい! (お汁)味噌汁系? すまし汁系? (お餅)角餅? 丸餅? / プレーンなお餅? あんこ餅?
-
エクセルVBAで、ある文字を含んでいたら別シートに抽出したい
Excel(エクセル)
-
Excelで、任意の言葉で始まる行のみを、行ごと一括で削除する方法を教
Excel(エクセル)
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
-
4
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
5
Excel VBA A列が特定の値以外の場合、その行を削除
Excel(エクセル)
-
6
指定した文字があった場合、その行を削除するマクロが欲しいです
Excel(エクセル)
-
7
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
8
EXCEL VBAで、セルの文字列の前後に文字を入力する方法は?
その他(Microsoft Office)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・「黒歴史」教えて下さい
- ・2024年においていきたいもの
- ・我が家のお雑煮スタイル、教えて下さい
- ・店員も客も斜め上を行くデパートの福袋
- ・食べられるかと思ったけど…ダメでした
- ・【大喜利】【投稿~12/28】こんなおせち料理は嫌だ
- ・前回の年越しの瞬間、何してた?
- ・【お題】マッチョ習字
- ・モテ期を経験した方いらっしゃいますか?
- ・一番最初にネットにつないだのはいつ?
- ・好きな人を振り向かせるためにしたこと
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
エクセルファイルのシート毎の容量
-
シート削除して同名シート追加...
-
EXCELで2つのファイルから重複...
-
時間帯の重複を除いた集計について
-
Googleスプレッドシートフィル...
-
Excelで日付変更ごとに、自動的...
-
Excel 売上管理シートに入力し...
-
他のシートの一番下の行データ...
-
トランジスタの選び方
-
エクセルで一覧表から担当別シ...
-
ユーザーフォームで別シートを...
-
コンボボックスの参照先(ListF...
-
excelマクロで複数シート間のデ...
-
EXCEL VBA 担当者毎にファイル作成
-
EXCEL の表を一行ずつシートに...
-
excel vlookup 新担当者への実...
-
Excelクエリで日付がうまく抽出...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
Excelでシートの違うデータでグ...
-
エクセルファイルのシート毎の容量
-
複数シートからデータを拾って...
-
シート削除して同名シート追加...
-
VBAで CTRL+HOMEの位置へ移動...
-
Excelで日付変更ごとに、自動的...
-
トランジスタの選び方
-
EXCELで2つのファイルから重複...
-
【エクセルマクロ】複数シート...
-
他のシートの一番下の行データ...
-
エクセル 縦に長い表の印刷時...
-
エクセル VBA VLOOKUP
-
【エクセル」 特定のセルで条件...
-
【Excel】マクロでグラフ系列に...
-
エクセルで名簿を50音で切り分ける
-
Excelマクロ 差分抽出の方法が...
-
時間帯の重複を除いた集計について
-
オートフィルタで抽出したデー...
-
Excel 売上管理シートに入力し...
おすすめ情報