[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『FILTER関数の代わり』(SASIO)
エクセル2013でFILTER関数が使えないので別の関数で出したいのですが……
【表1】
1|和食 肉 すき焼き ドラ 男性
2|和食 肉 すき焼き しずか 女性
3|和食 魚 寿司 のび太 男性
4|洋食 魚 ムニエル スネ夫 男性
5|洋食 野菜 サラダ ジャイアン 男性
6|洋食 野菜 サラダ しんのすけ 男性
7|中華 麺 ラーメン 風間 男性
8|中華 麺 ラーメン マサオ 男性
9|中華 御飯 チャーハン ネネ 女性
0|中華 御飯 チャーハン ボー 男性
【表2】
中華 御飯 チャーハン
【表3】
表2で表示されたものを元に、
名前と性別をフィルタではなく関数で抽出したいです。
この場合だと、
1|中華 御飯 チャーハン ネネ 女性
2|中華 御飯 チャーハン ボー 男性
< 使用 Excel:Excel2013、使用 OS:unknown >
行列番号を明記して表を提示してください。 「表2」とは別の場所に結果を表示するってこと? 「表2」に表示されるのは 1件だけ?
・「表1」は A〜E列(2行目からデータ) ・「表2」は G2:I2 ・「表3」は K〜O列(2行目から) ※N列が名前、O列が性別
N2 =IFERROR(INDEX(D:D,AGGREGATE(15,6,ROW($A$2:$A$100)/(($A$2:$A$100=$G$2)*($B$2:$B$100=$H$2)*($C$2:$C$100=$I$2)),ROW(A1))),"") 右・下コピー 表1のデータ範囲は実際の表に合わせる 最後の ROW(A1)は、A1セルの値とは関係ないので変更しないように
K2 =IF($N2="","",G$2) M2セルまで右コピー K2:M2 を下コピー
以上 (笑) 2023/06/30(金) 09:03:15
K2 =IFERROR(INDEX(A:A,AGGREGATE(15,6,ROW($A$2:$A$100)/(($A$2:$A$100=$G$2)*($B$2:$B$100=$H$2)*($C$2:$C$100=$I$2)),ROW(A1))),"") 右・下コピー
これなら 1つの式でできますけど K〜M列は「表2」の値を表示させるだけなのに、ムダなことをしているような気がしないでもない。
以上、参考まで (笑) 2023/06/30(金) 09:27:13
例えば、
Sheet1の範囲(A1:E10)からSheet2の1行目をキーとして列単位で同じであれば
sheet3に1行目から抜き出す
Option Explicit
Sub SerachKey()
Dim key As String Dim i As Integer Dim lastRow As Integer Dim destRow As Integer Dim ws1 As Worksheet, ws2 As Worksheet, ws3 As Worksheet
Set ws1 = Worksheets("Sheet1") Set ws2 = Worksheets("Sheet2") Set ws3 = Worksheets("Sheet3")
key = ws2.Range("A1") & ws2.Range("B1") & ws2.Range("C1")
lastRow = ws1.Cells(Rows.Count, 1).End(xlUp).Row destRow = 1
For i = 1 To lastRow If ws1.Cells(i, 1) & ws1.Cells(i, 2) & ws1.Cells(i, 3) = key Then ws1.Rows(i).Copy Destination:=ws3.Rows(destRow) destRow = destRow + 1 End If Next
Set ws1 = Nothing Set ws2 = Nothing Set ws3 = Nothing
End Sub
(CCR) 2023/06/30(金) 09:57:37
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.