今仮に、「インチ」と入力されているセルがSheet1のA1セルであり、Sheet2のB1セルに検索値を入力すると、Sheet2のA列~C列の4行目以下に抽出結果を表示させるものとします。
又、Sheet3のA列を作業列として使用するものとします。
まず、Sheet3のA1セルに次の関数を入力して下さい。
=IF(AND(ISNUMBER(Sheet2!$B$1),COUNT(Sheet1!$B:$C)),MIN(IF(COUNTIF(Sheet1!$B:$C,"<="&Sheet2!$B$1),Sheet2!$B$1-SMALL(Sheet1!$B:$C,COUNTIF(Sheet1!$B:$C,"<="&Sheet2!$B$1)),9E+307),IF(COUNTIF(Sheet1!$B:$C,">="&Sheet2!$B$1),LARGE(Sheet1!$B:$C,COUNTIF(Sheet1!$B:$C,">="&Sheet2!$B$1))-Sheet2!$B$1,9E+307))&"","")
次に、Sheet3のA2セルに次の関数を入力して下さい。
=IF(AND($A$1<>"",INDEX(Sheet1!$A:$A,ROW())<>"",COUNT(INDEX(Sheet1!$B:$B,ROW()),INDEX(Sheet1!$C:$C,ROW()))=2),IF(OR(ABS(INDEX(Sheet1!$B:$B,ROW())-Sheet2!$B$1)-$A$1=0,ABS(INDEX(Sheet1!$C:$C,ROW())-Sheet2!$B$1)-$A$1=0),ROW(),""),"")
次に、Sheet3のA2セルをコピーして、Sheet3のA3以下に貼り付けて下さい。
次に、Sheet2のA4セルに次の関数を入力して下さい。
=IF(ROWS($4:4)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!$A:$C,SMALL(Sheet3!$A:$A,ROWS($4:4)),COLUMNS($A:A)))
次に、Sheet2のA4セルをコピーして、Sheet2のB4~C4の範囲に貼り付けて下さい。
次に、Sheet2のA4~C4の範囲をコピーして、同じ列範囲の5行目以下に貼り付けて下さい。
以上で準備は完了で、後はSheet2のB1セルに検索値を入力しますと、検索値に最も近い値が入力されている行のデータが全て表示されます。
お礼
ご回答ありがとうございます。 回答どおりにやってみたら見事に完成しました! Sheet1に列(検索する必要のない項目)が増えた場合(D,Eなど)はSheet2のA4セルに入力する関数を =IF(ROWS($4:4)>COUNT(Sheet3!$A:$A),"",INDEX(Sheet1!$A:$E,SMALL(Sheet3!$A:$A,ROWS($4:4)),COLUMNS($A:A))) というようにC→Eと変えてから同じようにコピーしていけばいいのですね? (一応実験したところその方法で大丈夫でした) 本当にありがとうございます。助かりました!