▽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からです。