
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も見ています
-
プロが教えるわが家の防犯対策術!
ホームセキュリティのプロが、家庭の防犯対策を真剣に考える 2組のご夫婦へ実際の防犯対策術をご紹介!どうすれば家と家族を守れるのかを教えます!
-
特定の文字列があったらその行をまるごと別シートに反映させたい
Excel(エクセル)
-
【VBA】特定の文字が入っている行の一部を抽出して別シートコピーするには
Visual Basic(VBA)
-
【VBA】特定の値が入った行をコピーして別シートに貼り付ける方法をおしえていただきたいです。
Excel(エクセル)
-
4
エクセルで条件に一致したセルの隣のセルを取得したい
その他(Microsoft Office)
-
5
エクセルで、条件に一致した行を別のセルに抜き出す方法
Excel(エクセル)
-
6
ある列のセルに特定の文字が入っていたら他のセルに決まった文字を入れる
Word(ワード)
-
7
エクセルで特定の文字を含むセルをコピーしたい
Excel(エクセル)
-
8
【VBA】特定列に文字が入っていたらそのセル行をコピーしてマスターブックの同じ行に貼り付けたい
その他(Microsoft Office)
-
9
欲しいデータの行だけ別ブックに抽出したい
Excel(エクセル)
-
10
Excel 表から条件にあう行を別シートに抽出したい
Excel(エクセル)
-
11
エクセルVBAで、ある文字を含んでいたら別シートに抽出したい
Excel(エクセル)
-
12
エクセルで特定の項目の行を別のシートに表示したいのですがどうすればいい
Excel(エクセル)
-
13
エクセルVBAで、ある指定した文字を含む行だけを選択したいのですが、、 例えば、1〜20行目までに"10823748"
Excel(エクセル)
-
14
エクセル VBA 特定文字がある行を別シートに移動
Visual Basic(VBA)
-
15
【Excel】複数の列を参照して、特定の文字列を含む行全体を別シートに抽出する関数
Excel(エクセル)
-
16
特定の行を選択して別のシートにコピーするマクロ
Excel(エクセル)
-
17
VBAで特定の文字が入力されたセルを選択
Excel(エクセル)
-
18
複数シートのデータを抽出するには?
Excel(エクセル)
-
19
エクセルのIF関数で、文字が入力されていたならば~
Excel(エクセル)
-
20
ExcelVBAを使って、値がある場合は作業を繰り返し実行するプログラムを作成したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
このカテゴリの人気Q&Aランキング
-
4
あるセルに特定の文字列を打つ...
-
5
EXCELで2つの数値のうち大きい...
-
6
Excel 、この式はどのように解...
-
7
至急 Excel日付表示設定教えて...
-
8
EXCELで2列を参照し、重複する...
-
9
(Excel)あるセルに文字を入力...
-
10
エクセルのセル内の余白の設定...
-
11
Excel 書式を関数で判断。
-
12
エクセルの2ページ目の作り方
-
13
Excelで隣のセルと同じ内容に列...
-
14
Excel に貼り付けた図形が、保...
-
15
Excelで数式だけを消して、数値...
-
16
エクセル: セルの枠を超えて表示
-
17
エクセルで作った新しいウイン...
-
18
エクセルで表示形式の時刻の「0...
-
19
エクセル近似曲線(範囲指定)
-
20
エクセルの日付抽出
おすすめ情報
公式facebook
公式twitter