
いつもお世話になっております。
他の質問者様への回答より(https://oshiete.goo.ne.jp/qa/10889530.html)
上記参考に参照部分変えて作成してみたのですが、抽出場所と範囲が異なる為か、上手く動かず
また通常のループ処理だとデータが重いのか固まってしまいます。
二つのリストを比べて部分一致するものを隣の列に抽出したいです。
どうにか助けて頂けないでしょうか。
SHEET1⇒大元のデータ 3万件程
SHEET2⇒検索文字 3千件程
SHEET2のD列には抽出したい項目があります。(途中空白も含まれます)
そこでSHEET1のW列の中にSHEET2のA列の文字が含まれているとき、
SHEET1のX列2行目以降に一致した部分だけデータを抽出できないでしょうか。
SHEET1 ("作業用")
~(W列) (X列)
企業名 企業名
A㈱** A㈱
*B㈱*** B㈱
C㈱**
**D㈱**** D㈱
SHEET2("企業名修正")
企業名
A㈱
B㈱
D㈱
No.1ベストアンサー
- 回答日時:
こんにちは
過去の質疑はみていませんので、ご質問文からだけですけれど・・・
>SHEET2のD列には抽出したい項目があります。
>~SHEET2のA列の文字が含まれているとき、~
など、不明点がありますが、テキトーに仮定しました。
・シート名は「Sheet1」と「Sheet2」であるものと仮定。
・両シートとも1行目はタイトル行で、2行目からがデータであると仮定。
・検索キーに当たる文字列群は、Sheet2のA列に存在すると仮定。
・複数のキーワードがヒットすることは無いものと仮定。
(1件ヒットした時点で打ち切っています = 速度向上のため)
※ 以下は、全データをまとめて読み込んで処理する例ですので、メモリの使用量は増加します。
※ もしも、メモリ不足の場合は、一定単位(1万件や5千件など)ごとに順に処理をするように変更すればよろしいと思います。
ご参考までに。
Sub Sample_12331339()
Dim s1, s2
Dim n1 As Long, n2 As Long
Dim s As String, i As Long, j As Long
With Worksheets("Sheet2")
n2 = .Cells(Rows.Count, 1).End(xlUp).Row - 1
If n2 < 1 Then Exit Sub
s2 = .Cells(2, 1).Resize(n2).Value
For j = 1 To n2
If s2(j, 1) = "" Then s2(j, 1) = Chr(27)
Next j
End With
With Worksheets("Sheet1")
n1 = .Cells(Rows.Count, 23).End(xlUp).Row - 1
If n1 < 1 Then Exit Sub
s1 = .Cells(2, 23).Resize(n1).Value
For i = 1 To n1
s = s1(i, 1)
s1(i, 1) = ""
For j = 1 To n2
If InStr(s, s2(j, 1)) > 0 Then
s1(i, 1) = s2(j, 1)
Exit For
End If
Next j
Next i
.Cells(2, 24).Resize(n1).Value = s1
End With
End Sub
ご返答頂きありがとうございます!
実際のデータで実行しましたが、特に問題もなく、転記のスピードも一瞬で、
ずっと悩んでいたので大変助かりました!
本当にありがとうございます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Visual Basic(VBA) Sheet「状況」から、分類の年齢別カウント数をSheet「D表」へ転記する下記マクロを作っています 7 2022/12/14 17:57
- Excel(エクセル) 【Excel質問】別シートにある複数の同型の表から、同じ行項目にある数字を集計する 4 2023/02/16 00:14
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- その他(プログラミング・Web制作) pythonでクラスで複数のメソッドを利用する方法 2 2022/04/15 04:17
- Excel(エクセル) Excel 売上管理シートに入力した売上データを、日報に自動反映させたいと考えています。 売上管理シ 3 2023/04/29 18:08
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) Excelで日報を自動で作成したい 売上管理シートに入力した売上データを、日報に自動反映させたいと考 1 2023/04/29 18:07
- Excel(エクセル) Excelの数式についての質問 1 2022/10/31 15:50
このQ&Aを見た人はこんなQ&Aも見ています
-
2つの列を照合させてあいまい検索をしたいのですが
Excel(エクセル)
-
Excelでセル同士のうちで、一部でも合致した場合、その値を返す方法はないでしょうか?
Excel(エクセル)
-
excel VBA 2つのシートの特定の列を比較して同じ値のセルがあったらその行を上書きしたい
Excel(エクセル)
-
-
4
EXCEL関数で部分一致同士を検索する方法
Excel(エクセル)
-
5
別のシートから値を取得するとき
Visual Basic(VBA)
-
6
EXCEL VBA セルに既に入力されている文字に文字を追加する
Excel(エクセル)
-
7
複数の文字列のいずれかが含まれていたらTRUEを返す関数について
Excel(エクセル)
-
8
二つのリストを比べて部分一致する際に行ごと抽出するVBA
Excel(エクセル)
-
9
エクセルVBA、ファイル名をセルの値で保存の方法を教えてください。 おそれいります。こちらで数々のエ
Excel(エクセル)
-
10
エクセルVBA テキストボックスに3桁ごとにコンマ
Visual Basic(VBA)
-
11
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
12
【excelVBA】Findメソッドで検索対象を複数列
Excel(エクセル)
-
13
エクセルVBAでテキストボックスに入力があった場合のみ、ワークシートに転記したい
Visual Basic(VBA)
-
14
VBAで文字列を数値に変換したい
Excel(エクセル)
-
15
文字列から英数字のみを抽出する関数
Excel(エクセル)
-
16
ドロップダウンリスト 自動表示したい
Excel(エクセル)
-
17
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
18
VBA 複数行の検索及び抽出
Excel(エクセル)
-
19
【VBA】2つのシートの値を比較して条件一致したら、同じ行の隣の値を別ブックへ転記したいです。 VB
Visual Basic(VBA)
-
20
excel VBA 部分一致の名前をパスに指定する方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Worksheets メソッドは失敗しま...
-
Excelで、あるセルの値に応じて...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
Changeイベントでの複数セルの...
-
vba 2つの条件が一致したら...
-
【VBA】複数行あるカンマ区切り...
-
SpecialCells(xlCellTypeConsta...
-
VBAを使って検索したセルをコピ...
-
VBAで、離れた複数の列に対して...
-
VBA 何かしら文字が入っていたら
-
オートフィルタをマクロで作成...
-
VBAコンボボックスで選択した値...
-
データグリッドビューの一番最...
-
VBAで、特定の文字より後を削除...
-
【VBA】2つのシートの値を比較...
-
マクロについて。S列の途中から...
-
VBA 列が空白なら別のマクロへ...
-
重複データをまとめて合計を合...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで、あるセルの値に応じて...
-
Worksheets メソッドは失敗しま...
-
vba 2つの条件が一致したら...
-
B列の最終行までA列をオート...
-
IIF関数の使い方
-
Cellsのかっこの中はどっちが行...
-
【VBA】2つのシートの値を比較...
-
VBAのFind関数で結合セルを検索...
-
URLのリンク切れをマクロを使っ...
-
文字列の結合を空白行まで実行
-
VBA 何かしら文字が入っていたら
-
VBAを使って検索したセルをコピ...
-
【Excel VBA】 B列に特定の文字...
-
VBAで指定範囲内の空白セルを左...
-
Changeイベントでの複数セルの...
-
VBAで、離れた複数の列に対して...
-
VBAでのリスト不一致抽出について
-
データグリッドビューの一番最...
-
rowsとcolsの意味
-
DataGridViewに空白がある場合...
おすすめ情報