- ベストアンサー
エクセルの 行抽出方法教えてください
店舗 |郵便番号 |住所 |電話番号 |品目 |品目|品目 |品目 |品目 A店舗|000-0000| 東京| 090-1234-5678|テレビ|ビデオ |冷蔵庫|洗濯機|エアコン B店舗|110-0002|東京|080-1234-3221|扇風機|マッサージ機|掃除機|炊飯器|テレビ C店舗|000-0000|東京|070-1233-2222|エアコン|DVD|ドライヤー|アイロン|炊飯器 品目でテレビを検索して店舗名と行の情報すべて表示させたいのですがやり方を教えてください
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
こんばんは! VBAでの一例です。 Sheet1のデータをSheet2に表示するようにしてみました。 Alt+F11キー → メニュー → 挿入 → 標準モジュール → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻り、マクロを実行してみてください。 (Alt+F8 → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, lastCol As Long, c As Range, str As String, wS As Worksheet Set wS = Worksheets("Sheet2") wS.Cells.Clear str = Application.InputBox("検索品目を入力") Application.ScreenUpdating = False With Worksheets("Sheet1") lastCol = .Cells(1, Columns.Count).End(xlToLeft).Column .Columns(lastCol + 1).Insert For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row Set c = Range(.Cells(i, "A"), .Cells(i, lastCol)).Find(what:=str, LookIn:=xlValues, lookat:=xlWhole) If Not c Is Nothing Then .Cells(i, lastCol + 1) = 1 End If Next i If WorksheetFunction.CountIf(.Columns(lastCol + 1), 1) > 0 Then .Range("A1").AutoFilter field:=lastCol + 1, Criteria1:=1 .Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible).Copy wS.Range("A1") wS.Columns.AutoFit wS.Columns(lastCol + 1).Delete wS.Activate .Columns(lastCol + 1).Delete .AutoFilterMode = False Else MsgBox "該当データなし" End If End With Application.ScreenUpdating = True End Sub 'この行まで ※ 検索名はその都度インプットボックスに入力するようにしています。m(_ _)m
その他の回答 (3)
- kkkkkm
- ベストアンサー率66% (1742/2617)
No3です。すみませんつまらないミスがありました。 J列の数値をもと(0i以上) じゃなくて J列の数値をもと(1i以上) です
- kkkkkm
- ベストアンサー率66% (1742/2617)
No1です。 よく見るとテレビが同じ列にあるわけではないのですね。 としたらフィルターを使う場合、たとえばK1に検索したい品目を入力しJ2に以下の式を入れて下方向に必要なだけコピーします。 =COUNTIF(E2:I2,$K$1) そうするとJ列には検索したい品目が存在する行に1以上の数値が入りますので、J列の数値をもと(0i以上)にフィルターをかけます。J1が空白だとなんかやだなぁと思えたら「品目一致サイン」という項目名でもつけておけばいいでしょう。 K1に手入力すると間違う可能性があるという場合、リストを作成しておくと間違いがなくなります。リストの作り方は以下のページを参考にしてください。 Excel2010(エクセル2010)基本講座:入力規則の使い方(ドロップダウンリスト) http://www4.synapse.ne.jp/yone/excel2010/excel2010_nyukisoku2.html なお、フィルターはK列を含むとフィルターの▽が表示されてリスト選択用の▽と間違いやすくなりますので、A列からJ列までを選択してフィルター設定することをお勧めします。
- kkkkkm
- ベストアンサー率66% (1742/2617)
フィルターを利用してください。 Excel2010(エクセル2010)基本講座:フィルター(オートフィルター)の使い方http://www4.synapse.ne.jp/yone/excel2010/excel2010_filter1.html