エクセル2007を利用しています。
関数に関する知識がほとんどないのですが、下記のように出来れば効率よくなるのでみなさんのお力をお借りしたくて質問いたしました。どうかよろしくお願いいたします。
添付画像のような表を作成していますが、例ではA14に検索する文字「木」を入れていますが、別シートに検索結果を表示できるようにしたいです。
シート1に表を作成しシート2に検索結果を表示できるようになればと思います。
検索文字を「木」と入力すれば画像のようにAさん、Bさん、Gさんの名前と同時にB列、C列の文字も同時に結果として表示したいのです。表のように列違いにある文字をピックアップして結果として出したいのでお手数掛けますがよろしくお願いします。
こういうのは 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からです。
やろうと思えば マクロで できます。
2014/04/22 05:42:21新たに質問したらいいですが、その際、何をやりたいか 詳しく書いてもらったほうが より ベターな回答を得られるでしょう。
きゃづみぃ 様
2014/05/08 20:37:59再度質問させて頂きました。また宜しくご指導お願いいたします。