
Sheet1のA列に特定の文字列が含まれている行のみ(列はAだけでなくCまで続きます)を抜き出して、Sheet2に書き出すにはどうすればよいでしょうか。行が1,000行以上あり、とても手作業では無理です。バージョンはExcel 2007です。できるだけ詳しくお願いします。
添付画像左側が、作業開始前のSheet1です。右側が完成後のSheet2です。A列に文字列「JP」を含む行だけを抜き出して、Sheet2を添付画像右側のようにしたいです。マーカーは不要です。

No.6
- 回答日時:
こんにちは!
一番簡単なのは1行目を項目行にしておけば、オートフィルタでA列の「JP」をキーにフィルタを掛け
表示されているデータをそのまま別シートにコピー&ペーストする方法だと思います。
別案としてVBAでの一例です。
元データはSheet1にあり、Sheet2に表示するとします。
ALT+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)マクロを実行してみてください。
(ALT+F8キー → マクロ → マクロ実行です。)
Sub Sample1() '//この行から//
Dim myDic As Object
Dim i As Long, lastRow As Long
Dim myStr As String, wS As Worksheet
Dim myKey, myR, myAry
Set myDic = CreateObject("Scripting.Dictionary")
Set wS = Worksheets("Sheet2")
wS.Range("A:C").ClearContents
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
myR = Range(.Cells(1, "A"), .Cells(lastRow, "C"))
For i = 1 To UBound(myR, 1)
If myR(i, 1) = "JP" Then
myStr = myR(i, 1) & "_" & myR(i, 2) & "_" & myR(i, 3)
If Not myDic.exists(myStr) Then
myDic.Add myStr, ""
End If
End If
Next i
End With
myKey = myDic.keys
myR = Range(wS.Cells(1, "A"), wS.Cells(UBound(myKey) + 1, "C"))
For i = 0 To UBound(myKey)
myAry = Split(myKey(i), "_")
myR(i + 1, 1) = myAry(0)
myR(i + 1, 2) = myAry(1)
myR(i + 1, 3) = myAry(2)
Next i
Range(wS.Cells(1, "A"), wS.Cells(UBound(myKey) + 1, "C")) = myR
Set myDic = Nothing
wS.Activate
MsgBox "完了"
End Sub '//この行まで//
※ コードは長いですが、数万行のデータがあっても
ほとんど時間を要しないはずです。m(_ _)m
No.3
- 回答日時:
こんにちは
関数で解決する方法とマクロで行う方法とが考えられます。
ひとまず、関数の方を・・・
Sheet2のA1セルに
=IFERROR(INDEX(Sheet1!A:A,SMALL(IF(Sheet1!$A$1:$A$1000="JP",ROW($A$1:$A$1000)),ROW(A1))),"")
の式を入れて、Shift+Ctrl+Enterで確定。(←必須です)
確定後、必要な範囲に(右、下へ)フィルコピー。
・・・で、できると思います。
(↑の式は、ひとまず1~1000行までを対象にしてあります)
※ マクロの例は、どなたかが回答してくれるのをお待ちください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
特定の文字列があったらその行をまるごと別シートに反映させたい
Excel(エクセル)
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
-
4
エクセルVBAで、ある文字を含んでいたら別シートに抽出したい
Excel(エクセル)
-
5
【Excel】複数の列を参照して、特定の文字列を含む行全体を別シートに抽出する関数
Excel(エクセル)
-
6
Excel 表から条件にあう行を別シートに抽出したい
Excel(エクセル)
-
7
特定の文字がある行以外を削除するマクロ
その他(Microsoft Office)
-
8
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
9
エクセルVBAで、ある指定した文字を含む行だけを選択したいのですが、、 例えば、1〜20行目までに"10823748"
Excel(エクセル)
-
10
特定の文字を含むシートだけマクロ処理をしたい
Visual Basic(VBA)
-
11
ある文字列を含む行の抽出
Excel(エクセル)
-
12
エクセルvbaで、別シートの最下行にデータを取り込むコードを教えてください。
Visual Basic(VBA)
-
13
エクセルVBA C列に特定の文字列を含む行のみを抽出し、一つのExcelにまとめたい。
Excel(エクセル)
-
14
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
-
15
EXCEL-複数列から特定内容の行のみ抽出
Excel(エクセル)
-
16
マクロ 新しいシートにデータをコピペしてシートの名前を変更したい
Excel(エクセル)
-
17
複数のマクロボタンをまとめて一つのマクロボタンにするということ。
Excel(エクセル)
-
18
VBAで特定の文字を探して隣のセルに色を付けたい
Excel(エクセル)
-
19
【Excel VBA】複数ある特定の文字列を含む行を削除
Excel(エクセル)
-
20
VBAで特定の文字が入力されたセルを選択
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VLOOKUP FALSEのこと
-
【関数】【マクロ】売上X円以上...
-
【マクロ 画像あり】Exact関数...
-
空白処理を空白に
-
同じ名前(重複)かつ 日本 ア...
-
エクセルでフィルターした値を...
-
エクセルシートの見出しの文字...
-
空白のはずがSUBTOTAL関数でカ...
-
excel
-
if関数の複数条件について
-
【マクロ】数式を入力したい。...
-
Excelで4択問題を作成したい
-
Excel 複数のセルが一致すると...
-
Excel 日付の表示が直せません...
-
表計算ソフトでの様式の呼称
-
【マクロ】既存ファイルの名前...
-
【マクロ】エラー【#DIV/0!】が...
-
【マクロ】実行時エラー '424':...
-
エクセルの文字数列関数と競馬...
-
エクセルに写真が貼れない(フ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルでフィルターした値を...
-
if関数の複数条件について
-
エクセルシートの見出しの文字...
-
excel
-
エクセルの文字数列関数と競馬...
-
VLOOKUP FALSEのこと
-
同じ名前(重複)かつ 日本 ア...
-
表計算ソフトでの様式の呼称
-
エクセルに写真が貼れない(フ...
-
【マクロ】数式を入力したい。...
-
【マクロ】実行時エラー '424':...
-
【画像あり】オートフィルター...
-
Office2021のエクセルで米国株...
-
【画像あり】【関数】指定した...
-
エクセルのVBAで集計をしたい
-
【マクロ】【画像あり】4つの...
-
【関数】3つのセルの中で最新...
-
【マクロ】excelファイルを開く...
-
LibreOffice Clalc(またはエク...
-
エクセルのライセンスが分かり...
おすすめ情報