- 締切済み
エクセルの同一ファイル内での検索
行き詰ってます。 例えば・・・ シート1 A B C 1 No. 氏名 支給月 ・・・ 2 ↓ シート2・・・ A B 1 No. 氏名 2 ↓ 上記のように、シート2には支給月により、No.と氏名のみ表示したいのです。 条件は、支給月が毎月ではないので、C~Nを4月から翌年3月とし、支払月に○を入力します。 シート2以降、シート13までを4月から翌年3月にしたい場合に、シート2以降はどのような組み方が可能でしょうか? 説明下手ですみませんがご教示願います。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- kigoshi
- ベストアンサー率46% (120/260)
関数やピボットテーブルの応用で何とかなるような気がして考えてみたの ですが、うまくできませんでした。 結局、マクロでむりやり作る方法しか浮かびませんでした。 0)シート1および12ヶ月分のシートはすでに用意されているとします。 1)[Alt]+[F11]を押してエディタを開きます。 2)左側のプロジェクトエクスプローラーのSheet1をWクリック 3)右側のエディタウィンドウで下記ソースを貼り付けます。 Sub Worksheet_Change(ByVal Target As Range) Dim rg As Range Dim rIdx As Long Dim rIdxB As Long For Each rg In Target If rg.Column > 2 Then sheets(rg.Column - 1).Cells.ClearContents rIdxB = 1 sheets(rg.Column - 1).Cells(rIdxB, 1).Value = "No." sheets(rg.Column - 1).Cells(rIdxB, 2).Value = "氏名" rIdx = 1 Do Until rIdx = Range("A65536").End(xlUp).Row rIdx = rIdx + 1 If Cells(rIdx, rg.Column).Value = "○" Then rIdxB = rIdxB + 1 sheets(rg.Column - 1).Cells(rIdxB, 1).Value = Cells(rIdx, 1).Value sheets(rg.Column - 1).Cells(rIdxB, 2).Value = Cells(rIdx, 2).Value End If Loop End If Next End Sub 4)エクセルの表に戻って○を付けたり消したりすると、その列の月の表が 作成されます。 ご参考になれば。
- x0000x
- ベストアンサー率52% (67/127)
「データ」-「フィルタオプションの設定」により データ抽出が可能です。(認識違いならごめんなさい) 再実行が必要な場合には、以下の手順をマクロ化することで対応できると思います。 4月~7月分として実際に操作した結果を以下に示します。 概略: Sheet1にデータリストが格納されています。←リスト範囲です Sheet2に検索条件を予め用意(列見出しと"○")します。←検索条件範囲 Sheet2に抽出結果を表示する場所を用意(列見出し)します。←抽出範囲 操作: (1)Sheet2を選択。 (2)「データ」-「フィルタオプションの設定」を選択。 ※「リストまたは選択範囲のどの行に … 行を特定する必要があります」が 表示された場合は「OK」ボタンを押下し、適切な範囲を入力します。 (3)「フィルタオプションの設定」ダイアログで以下を入力。 (1)抽出先ラジオボタン:「指定した範囲」を選択。 (2)リスト範囲 :Sheet1のデータリスト範囲をマウスで選択。 以下のサンプルでは「Sheet1!$A$1:$F$6」 (3)検索条件範囲:Sheet2の検索条件範囲をマウスで選択。 以下のサンプルでは「Sheet2!$A$1:$F$2」 (4)抽出範囲 :Sheet2の抽出範囲をマウスで選択。 以下のサンプルでは「Sheet2!$A$4:$B$4」 (4)「OK」ボタンを押下する。 (5)上記のSheet2の操作をSheet3~13に置き換えれば、12ヶ月分可能です。 抽出範囲で指定した見出し列の次行から検索結果が表示できます。 <Sheet1 > NO__氏名__4月__5月___6月__7月 ←説明:リスト範囲をA1:F6 1____A____○ 2____B____○ 3____C__________○____○ 4____D__________○ 5____E________________○__○ <Sheet2 > NO__氏名__4月__5月___6月__7月 ←説明:検索条件範囲をA1:F2 ________________○ NO__氏名 ←説明:抽出範囲はA4:B4 ↓ <Sheet2 > NO__氏名__4月__5月___6月__7月 ←説明:検索条件範囲をA1:F2 ________________○ NO__氏名 ←説明:抽出結果 3____C 4____D ※補足1 条件が複数ある場合。 たとえば、4月と5月の場合は、検索条件範囲で複数行にします。 <Sheet2 > NO__氏名__4月__5月___6月__7月 ←説明:検索条件範囲をA1:F3 __________○ ________________○ NO__氏名 ←説明:抽出結果 1____A 2____B 3____C 4____D 以上