人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

こんにちは
エクセル2007を利用しています。
関数に関する知識がほとんどないのですが、下記のように出来れば効率よくなるのでみなさんのお力をお借りしたくて質問いたしました。どうかよろしくお願いいたします。

添付画像のような表を作成していますが、例ではA14に検索する文字「木」を入れていますが、別シートに検索結果を表示できるようにしたいです。

シート1に表を作成しシート2に検索結果を表示できるようになればと思います。
検索文字を「木」と入力すれば画像のようにAさん、Bさん、Gさんの名前と同時にB列、C列の文字も同時に結果として表示したいのです。表のように列違いにある文字をピックアップして結果として出したいのでお手数掛けますがよろしくお願いします。

1390178397
●拡大する

●質問者: dejavu888i
●カテゴリ:コンピュータ
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● きゃづみぃ
●500ポイント ベストアンサー

こういうのは VBA(マクロ)を使わないと難しいでしょう。

無理に関数でやる方法や 抽出処理をする方法もありますが、何度も繰り返しやるには 向いてないと思います。

以下のマクロでやればいいです。

Sub 抽出()
 Dim r As Long
 Dim f As Long
 Dim 位置 As Long
 
 シート1 = "Sheet1"
 シート2 = "Sheet2"
 
 曜日 = Worksheets(シート2).Range("A1")
 
 データ開始位置 = 2  'データの開始位置はA2からです。
 出力開始位置 = 3  '出力の開始位置はA3からです。
 
 If 曜日 = "" Then Exit Sub
 
  '初期化
 位置 = 出力開始位置
 If Worksheets(シート2).Cells(位置, "A") <> "" Then
 位置 = 位置 + 1
 If Worksheets(シート2).Cells(位置, "A") <> "" Then
 位置 = Worksheets(シート2).Cells(出力開始位置, "A").End(xlDown).Row
 End If
 End If
 
 For r = 出力開始位置 To 位置
 Worksheets(シート2).Cells(r, "A") = ""
 Worksheets(シート2).Cells(r, "B") = ""
 Worksheets(シート2).Cells(r, "C") = ""
 Next r
 
 
  '抽出
 位置 = データ開始位置
 If Worksheets(シート1).Cells(位置, "A") <> "" Then
 位置 = 位置 + 1
 If Worksheets(シート1).Cells(位置, "A") <> "" Then
 位置 = Worksheets(シート1).Cells(データ開始位置, "A").End(xlDown).Row
 End If
 End If
 
 f = 出力開始位置
 For r = データ開始位置 To 位置
 For b = 4 To 4 + 7
 If Worksheets(シート1).Cells(r, b) = 曜日 Then
 Worksheets(シート2).Cells(f, "A") = Worksheets(シート1).Cells(r, "A")
 Worksheets(シート2).Cells(f, "B") = Worksheets(シート1).Cells(r, "B")
 Worksheets(シート2).Cells(f, "C") = Worksheets(シート1).Cells(r, "C")
 f = f + 1
 Exit For
 End If
 Next b
 Next r

End Sub

以下の内容を適宜変更して使ってください。

 ↓シート名です。
 シート1 = "Sheet1"
 シート2 = "Sheet2"
 
 ↓抽出する曜日を指定する箇所です。
 曜日 = Worksheets(シート2).Range("A1") ← A1

 
 データ開始位置 = 2  'データの開始位置はA2からです。
 出力開始位置 = 3  '出力の開始位置はA3からです。


dejavu888iさんのコメント
どうも早速の回答ありがとうございます。 ご指導のように登録しましたら希望どおりになりました。 今後の参考にお聞きしたいのですが、例えば固定で表示している名前+B列+C列なんですが、D列、E列を増やすとした場合には Worksheets(シート2).Cells(f, "C") = Worksheets(シート1).Cells(r, "C") この部分の"c"という部分を"D"に変えて増やしていくだけでいいのですか? よろしくお願いいたします。

きゃづみぃさんのコメント
初期化している箇所と セットしている箇所の二か所に追加すればよいです。

dejavu888iさんのコメント
どうもありがとうございました。 また、宜しくお願いします。

dejavu888iさんのコメント
きゃづみいさん。 先日は、ありがとうございました。大変便利に利用しているんですが、使っているうちに欲が出てきましてピックアップされたものを曜日毎に縦に貼り付けて罫線を作成して表を作るまでをマクロで出来るんやろうなぁ・・・思いまして可能かどうか、またご教授をお願いできるのであれば新たに質問として上げようかな?と考えております。如何なもんでしょうか?宜しくお願いいたします。

きゃづみぃさんのコメント
やろうと思えば マクロで できます。 新たに質問したらいいですが、その際、何をやりたいか 詳しく書いてもらったほうが より ベターな回答を得られるでしょう。

dejavu888iさんのコメント
きゃづみぃ 様 再度質問させて頂きました。また宜しくご指導お願いいたします。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ