key番号が違っているのに同じ名称(りんご)があるということでかなり難しい問題となっています。
シート1から3までには作業用の列を作りたくはないということなのでシート4に作業用のシートを別に作って対応することにします。
シート4のA2セルには次の式を入力してB2セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。
=INDEX(Sheet1!$A:$B,ROW(A2),COLUMN(A2))
これによってシート1の表をコピーすることになります。
C2セルには次の式を入力して下方にオートフィルドラッグコピーします。
=IF(OR(A2="",A2=0),"",IF(COUNTIF(B$2:B2,B2)=1,ROUNDDOWN(MAX(C$1:C1),-3)+1000,ROUNDDOWN(INDEX(C$1:C1,MATCH(B2,B$1:B1,0)),-3)+COUNTIF(B$1:B1,B2)))
この式では同じ名称(りんご)でkey番号が500有ったとしても対応できます。
D2セルには次の式を入力して下方にオートフィルドラッグコピーします。
=IF(C2="","",SUM(E2:Z2)/COUNTIF(E2:Z2,">0"))
E2セルには次の式を入力してZ2セルまで横にオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。
=IF(OR($A2="",$A2=0),"",IF(MOD($C2,1000)=0,INDEX(Sheet2!$A:$Z,MATCH($A2,Sheet2!$A:$A,0),COLUMN(B2)),IF(INDEX($E$1:$AA1,MATCH(ROUNDDOWN($C2,-3)+COUNTIF($B$1:$B1,$B2)-1,$C$1:$C1,0),COLUMN(A2))<>0,INDEX($E$1:$AA1,MATCH(ROUNDDOWN($C2,-3)+COUNTIF($B$1:$B1,$B2)-1,$C$1:$C1,0),COLUMN(A2)),INDEX(Sheet2!$A:$Z,MATCH($A2,Sheet2!$A:$A,0),COLUMN(B2)-COUNTIF(INDEX($E$1:$AA1,MATCH(ROUNDDOWN($C2,-3)+MOD($C2,1000)-1,$C$1:$C1,0),1):INDEX($E$1:$AA1,MATCH(ROUNDDOWN($C2,-3)+MOD($C2,1000)-1,$C$1:$C1,0),23),">0")))))
最後にお求めのシート3のA2セルには次の式を入力してB2セルまでオートフィルドラッグコピーしたのちに下方にもオートフィルドラッグコピーします。
=IF(COUNTIF(Sheet4!$C:$C,ROW(A1)*1000)=0,"",IF(COLUMN(A1)=1,INDEX(Sheet4!$B:$B,MATCH(ROW(A1)*1000,Sheet4!$C:$C,0)),INT(INDEX(Sheet4!$D:$D,MATCH(ROW(A1)*1000+COUNTIF(Sheet4!$B:$B,$A2)-1,Sheet4!$C:$C,0)))))
これによってA列には名称が、B列には金額の平均が表示されます。
お礼
簡潔なご回答ありがとうございます。 非常に助かりました。 大変、申し訳ないのですが、一点条件が漏れてしまっておりました。。 後出しの条件で大変申し訳ございません。 Sheet2には対応するkeyが存在しない場合があります。 例: 【Sheet2】 key 価格1 価格2 価格3 001 100 80 50 003 60 90 kybo様のご回答は、初めにこちらの提示した条件を満たしており、 簡潔なものでしたので、今後の他の方のご回答に寄らず、 ベストアンサーとさせて頂きたいです。 お手数をお掛けいたしました。