今回は完全に滑っちゃったみたいですみません。
実は↓の67しか動くものは作れませんでした。
{=SUM((LOOKUP(ROW(3:22),1/(B3:B22>0)*ROW(3:22),B3:B22)=E3)*C3:C22)}
問題にする前にいろいろやってたのですが、要は空白の部分を上の商品名で埋めた配列を作れば終わりということで
OffsetとかIndirectで
{=OFFSET(B2,MATCH(ROW(3:22),1/(B3:B22>0)*ROW(3:22)),)}
{=INDIRECT("B"&MATCH(ROW(3:22),1/(B3:B22>0)*ROW(3:22))+2)}
などを試してました。
やられて見ればお分かりだと思いますが、これらで望みどおりの配列が作られますが、
{=OFFSET(B2,MATCH(ROW(3:22),1/(B3:B22>0)*ROW(3:22)),)=E3}
のように何か演算を加えるとすべて#Valueになってしまい機能しませんでした。
こんな複雑な話ではなくて、
{=OFFSET(C2,ROW(1:10),)>200}
こういう単純なことをやっても機能しません。
理由をご存じの方がおられましたらご教示ください。 (sakudaさん)
最初
=FREQUENCY(ROW(1:22),IF(B3:B22>0,ROW(3:22)))
で範囲の配列作れないかと考えましたが難しいと思い
ysakudaさんと同様に空白を埋める配列を作る方に方向転換
LOOKUPを使うのでIF(B3:B22>0,ROW(3:22))は
MATCH(B:B,B:B,)に置き換えられるかと思いついた2007以上限定の67
{=SUM((LOOKUP(ROW(4:23),ROW(A:A)+MATCH(B:B,B:B,)%,B:B)=E3)*C3:C22)}
※一般的にはMATCHの検索値部分をB:B⇒B1:B99とすればよかったかと思います。
一般的67はy sakudaさんの67とは少し違ってましたね、、、
{=SUM((LOOKUP(ROW(3:22),IF(B3:B22>0,ROW(3:22)),B3:B22)=E3)*C3:C22)}
63は
{=SUM((LOOKUP(ROW(3:22),IF(B1:B22>0,ROW(A:A)),B:B)=E3)*C3:C22)}
でしたd
>演算を加えるとすべて#Valueになってしまい機能しません
そうですねー、何故でしょうか?
投稿情報: む印 | 2012年12 月15日 (土曜日) 午後 09時10分
そうか、IFがどうこうと言うより、Lookup Falseが混ざっても大丈夫なんだ・・・・
知らなかったです。
しかし、MATCH(B:B,B:B,) なんで、2003ではエラーになるんだろ?
投稿情報: y sakuda | 2012年12 月15日 (土曜日) 午後 09時35分
しかし、この問題、からくちさんあたりは秒殺だと思ったんですけどね・・・
投稿情報: y sakuda | 2012年12 月15日 (土曜日) 午後 09時36分
う~ん、60台でできちゃうんだ・・・
投稿情報: くまぷー | 2012年12 月15日 (土曜日) 午後 09時45分
あ~、回答が出てる・・・てか、結局完成しなかったし。
で、回答見ても理解できない orz
投稿情報: ni | 2012年12 月16日 (日曜日) 午後 09時03分
>今回は完全に滑っちゃったみたいですみません
◆そんなことはないと思いますよ
◆出題者からの「関数で出来ますか~?」の問題に、解答出来るかどうかで、
◆その問題に完敗で、解答できなかっただけですから
投稿情報: maron | 2012年12 月17日 (月曜日) 午前 09時03分
>◆出題者からの「関数で出来ますか~?」の問題に、解答出来るかどうかで
ここの主旨はやはりみんなでワイワイいろんな手法を出して楽しむってことだと思いますから・・・・
まあ、ご承知のようになまじの人では回答見ても理解できなさそうなのが多いですから、あまり一般受けする話じゃないですけどねーー
投稿情報: y sakuda | 2012年12 月17日 (月曜日) 午前 09時44分
>理由をご存じの方がおられましたら
ひとつのヒントになればいいのですが…
{=SUM((T(OFFSET(B2,MATCH(ROW(3:22),1/(B3:B22>0)*ROW(3:22)),))=E3)*C3:C22)}
投稿情報: む印 | 2012年12 月17日 (月曜日) 午後 11時20分
へー、一見意味のないTをかませるとまともに動くんですね。
要するに見かけと違ってまともな文字列とはみなされていないってことなんでしょうね。納得はしきれませんがw
投稿情報: y sakuda | 2012年12 月17日 (月曜日) 午後 11時55分
う~ん、minさんあたりが62を出してくれると思ったのですが、、
どうしておられるのかな~、、、、。
投稿情報: む印 | 2012年12 月18日 (火曜日) 午前 10時50分
>62
61でした、、
投稿情報: む印 | 2012年12 月18日 (火曜日) 午前 11時08分
61
{=SUM((LOOKUP(ROW(3:22),ROW(A:A)/(B1:B22>0),B:B)=E3)*C3:C22)}
投稿情報: む印 | 2012年12 月18日 (火曜日) 午後 06時08分
おおーーー
はんじょー・・・・・して、、、ますね、、、よかった。
投稿情報: ジョー3 | 2012年12 月18日 (火曜日) 午後 07時15分
61ですか・・・・・
なるほどです。
>はんじょー・・・・・して、、、ますね、
閑古鳥状態w
投稿情報: y sakuda | 2012年12 月18日 (火曜日) 午後 08時00分