解答式
■関数のみ(エラー表示)の67文字
=VLOOKUP(B5,{"B",100;"A",200;"AB",300;100,"B";200,"A";300,"AB"},2,)
■条件付書式は使用し、表示形式は使用しない場合
64文字
=IF(B5>"",MATCH(B5,{"b","a","ab"})*100,MID("ABB",3/B5%,B5%/3+1))
54文字
=IF(B5>"",SEARCH(B5,"BAAB")/1%,TEXT(B5%-2,"A!B;!B;A"))
■条件付書式と表示形式を使用、見た目重視の36文字
=IF(N(B5),B5%-2,SEARCH(B5,"BAAB")&0)
+++ 書式の設定 +++++++++++++++++++++++++++++++++
基本のセル書式でフォントカラーを白にしておき
-----------------------------------------------
<条件付書式>
数式が:=IF(B5>"",SEARCH(B5,"AB "&B5)<3,LEN(B5%)*B5%<4)
でフォントカラーを黒に設定
-----------------------------------------------
<表示形式>
ユーザー定義: "AB";"B";"A";@!0
++++++++++++++++++++++++++++++++++++++++++++++++
その他、色々あると思いますが、個人的にはCODE関数使った解答が
ウマくできなかったので、出てきたらいいなぁーと思っていますd
(む印さん談)
コメントを投稿
アカウント情報
(名前は必須です。メールアドレスは公開されません。)
>=VLOOKUP(B5,{"B",100;"A",200;"AB",300;100,"B";200,"A";300,"AB"},2,)
む印さんのものと同じです。
こちらはHLookupを使いましたが・・・
かあなりの高確率でsakudaさんのものと
同じだと思います。
投稿情報: くまぷー | 2009年4 月25日 (土曜日) 午後 08時03分
うはーーーー
皆さんの答えは・・・全部凄いですーーー
私のは、単純&進歩しなかった。
59: =CHOOSE(SEARCH(B5,"a200b100ab300"),2,"A",,,1,"B",,,3,,"AB")
表示形式で、 0"00" だったかな?
あと、条件付き書式で、エラーを消しただけ、、
今回も、がんばれなかったなーー
投稿情報: ジョー3 | 2009年4 月25日 (土曜日) 午後 08時21分
む印さん・・・・
> <条件付書式>
数式が:=IF(B5>"",SEARCH(B5,"AB "&B5)<3,LEN(B5%)*B5%<4)
すげーーーー・・・・
本体より、、高度だなーーー
投稿情報: | 2009年4 月25日 (土曜日) 午後 08時24分
あ・・・・
名前を書かないで、
叱られちゃった。
>=VLOOKUP(B5,{"B",100;"A",200;"AB",300;100,"B";200,"A";300,"AB"},2,)
気付かなかったなーーーー
投稿情報: ジョー3 | 2009年4 月25日 (土曜日) 午後 08時28分
>む印さんのものと同じです。
そうでしたか、、真っ当なやつでは私も
表引きしか思い当たりませんでした、、
>表示形式で、 0"00" だったかな?
ジョー3さんは早くから表示形式使用の
短縮を思いつかれてたんですねぇー、凄い!
それと、CHOOSE関数使うのは全く考えませんでした、、
実は最初FIND関数でA・Bの判断させてて、
小文字を入力したらエラー、www
一旦MATCH関数に切り替えました。
SEARCH関数の存在を思い出したのは
だいぶ後になってからで、
物忘れがひどくなって来たことを実感しました。
投稿情報: む印 | 2009年4 月25日 (土曜日) 午後 09時17分
あんまり出来なかったけど
ちょっとだけやっていました。
Vlookupを使う方法はすぐに思いつきました。
そのほか、完成度は低いけど今日頭の中に描いていたものをやってみました。
セルの式
=CHOOSE(N(B5)%+SEARCH(T(B5),"a ab"),2,"B","A","AB",3,1)
条件付き書式
=AND(B5<>100,B5<>200,B5<>300,B5<>"a",B5<>"b",B5<>"ab")
書式
0"00"
書式無しなら6文字増加です。
投稿情報: minmax | 2009年4 月25日 (土曜日) 午後 09時31分
皆さんが、、
sakudaさん、くまぷーさんがた、、
1関数って言っておられたから、、
IFかなーーーって、思った。
> =CHOOSE(N(B5)%+SEARCH(T(B5),"a ab"),2,"B","A","AB",3,1)
同じ関数使っても・・・・
ジョー3=単純
minmaxさん=高度だなーー
>実は最初FIND関数でA・Bの判断させてて、
実は、おらもやった。
投稿情報: ジョー3 | 2009年4 月25日 (土曜日) 午後 09時37分
べたべたに思い付いたのが、
=IF(B5="A",200,IF(B5="B",100,IF(B5="AB",300,IF(B5=200,"A",IF(B5=100,"B",IF(B5=300,"AB",""))))))
考えてもさっぱりでした。
=INDEX({200,100,300,"A","B","AB"},MATCH(B5,{"A","B","AB",200,100,300},0))
投稿情報: かず | 2009年4 月25日 (土曜日) 午後 09時41分
>考えてもさっぱりでした。
>=INDEX({200,100,300,"A","B","AB"},MATCH(B5,{"A","B","AB",200,100,300},0))
かずさんーーー・・・
わかりやすいですーーーーこれも、、
投稿情報: ジョー3 | 2009年4 月25日 (土曜日) 午後 09時46分
>=IF(N(B5),B5%-2,SEARCH(B5,"BAAB")&0)
やられたってかんじですね。
投稿情報: minmax | 2009年4 月25日 (土曜日) 午後 09時58分
かずさんのIFが一番素直ですね。
投稿情報: minmax | 2009年4 月25日 (土曜日) 午後 10時00分
VLOOKUP関数でたぶん出来るんだろうな~と思っていましたが、
配列を2列にする方法が最後まで分かりませんでした。^^;
断念。(-_-;)
結局、最初に考えた式からは一文字しか短縮できませんでした。
71文字です。(^^ゞ
=CHOOSE(MATCH(B5,{"A";"B";"AB";200;100;300},),200,100,300,"A","B","AB")
問題をそのまま式にしたような単純な式しか...。^^;
投稿情報: ますたあ | 2009年4 月25日 (土曜日) 午後 10時01分
今帰って来て見始めたところですが、67はHlookupでくまぷーさんと同じですねーー
投稿情報: y sakuda | 2009年4 月25日 (土曜日) 午後 10時02分
む印さんの36、minmaxさんのAND 全く理解できてないです。後でゆっくり考えてみます。
大体皆さんがやってる書式で0を追加するという発想自体思いつかなかったです。
出てなさそうなのを
58
=MID("200100300B AB A",SEARCH(B5,"A B AB 100300200"),3)
条件付き書式2つです
=B5=0
=IF(ISNUMBER(B5),MOD(B5,100)>0,1-SUM(B5="AB",B5="A",B5="B"))
これは書式も使う58
=LOOKUP(B5,{100,200,300,"A","AB","B";"B","A","AB",-1,0,1})
条件付き書式は同じで書式は↓
"100";"200";300
投稿情報: y sakuda | 2009年4 月25日 (土曜日) 午後 10時11分
>>=IF(N(B5),B5%-2,SEARCH(B5,"BAAB")&0)
>やられたってかんじですね。
確かにこれは凄まじいですね~
投稿情報: くまぷー | 2009年4 月25日 (土曜日) 午後 10時11分
>67はHlookupでくまぷーさんと同じですねーー
やはり、そうでしたか~
投稿情報: くまぷー | 2009年4 月25日 (土曜日) 午後 10時13分
かずさんの・・・
=IF(B5="A",200,IF(B5="B",100,IF(B5="AB",300,IF(B5=200,"A",IF(B5=100,"B",IF(B5=300,"AB",""))))))
・・・が素直さで一番かな~
投稿情報: くまぷー | 2009年4 月25日 (土曜日) 午後 10時15分
かずさんの、IF関数一つの式、
からくちさんが「基本?」といってたのは
この式って感じですねぇd^^
minさんの式は基本ジョー3さんと同じみたいだけど
NとTの関数をうまく使ってますねぇー
特にT関数は全く発想できなかったです!
ますたあさんもCHOOSE関数での分岐ですかぁー
これが頭に浮かんできませんでした、、、
おおーーー
y sakudaさんのMIDの第2引数でSEARCH関数を
使う手法はスマートでカッコいいですーーーーーd
同じ関数使ってるんですが、この発想には脱帽です!
投稿情報: む印 | 2009年4 月25日 (土曜日) 午後 11時13分
今回は少々(いや、結構・・・かな)悪役になります
今回の問題は思ったよりはるかに厄介と感じました
もちろん文字数をより少なくとした場合ですが
理由は1にも2にも
>B5に入力できるのは「A」「B」「AB」又は「200」「100」「300」の6種のみで
>それ以外が入力された場合、若しくは未入力の場合はD5セルは無表示とする
これです
ただ条件付き書式で
>=AND(B5<>100,B5<>200,B5<>300,B5<>"a",B5<>"b",B5<>"ab")
と上記の条件をすべて書いてしまえば別ですが
でもこれって本当?なら
文字数の一部と思ってしまう
>=IF(B5>"",MATCH(B5,{"b","a","ab"})*100,MID("ABB",3/B5%,B5%/3+1))
>=IF(B5>"",SEARCH(B5,"BAAB")/1%,TEXT(B5%-2,"A!B;!B;A"))
>=IF(N(B5),B5%-2,SEARCH(B5,"BAAB")&0)
いずれも B5=99 ?
>=CHOOSE(SEARCH(B5,"a200b100ab300"),2,"A",,,1,"B",,,3,,"AB")
B5=10 ?
今回の問題は見た目以上に厄介では
投稿情報: からくち | 2009年4 月25日 (土曜日) 午後 11時14分
>かずさんの・・・
=IF(B5="A",200,IF(B5="B",100,IF(B5="AB",300,IF(B5=200,"A",IF(B5=100,"B",IF(B5=300,"AB",""))))))
>・・・が素直さで一番かな~
>この問題。。。基本?は95文字と思います
投稿情報: からくち | 2009年4 月25日 (土曜日) 午後 11時17分
そう言えば、今回は配列数式は出てきてないですね。
私が最初の頃やったのは配列数式で83です。(書式はなし)
{=MID(" B A AB 200100300",SUM((B5={100;200;300;"A";"B";"AB"})*ROW(1:6))*3+1,3)}
投稿情報: y sakuda | 2009年4 月25日 (土曜日) 午後 11時24分
>関数7種7個・・・・112文字
=TRIM(MID(SUBSTITUTE("B&100&&A&200&&AB&300","&",REPT(" ",99)),(SEARCH(T(B5)&N(B5)/100,"1B02A03AB0")-1)*99+1,99))
>関数9種11個・・・148文字
=TRIM(MID(SUBSTITUTE(ADDRESS(SEARCH(T(B5)," B A AB")*50*(B5>0),FIND(N(B5)/100," 2 1 0"&REPT(" ",50)&3)/2),"$",REPT(" ",100)),(N(B5)=0)*100+101,100))
関数7種8個・・・127文字
=LEFT(REPLACE("100B 200A 300AB ",1,MAX((N(B5)/100-1+MOD(N(B5)/100,1)*9^9)*6+3,SEARCH(T(B5),"B A AB")-1),),3*(B5<>""))
=CHOOSE(SEARCH(T(B5)&N(B5)/100,"A01B02AB03"),200,"","B",100,,"A",300,,,"AB")
=MID("B A AB 200300100",MATCH(B5,{100,200,300,"A","AB","B"},)*3-2,3)
{=VLOOKUP(B5,CHOOSE(IF(N(B5),{1,2},{2,1}),{100;200;300},{"B";"A";"AB"}),2,0)}
まともなのが1つも無い
お遊び(無駄)のみ
むずかしい・難しい・ムズカシイ・・・
投稿情報: からくち | 2009年4 月25日 (土曜日) 午後 11時28分
>今回の問題は見た目以上に厄介では
ほんとにそうですね。
短くしようとすると悩ましく、良い問題ですね。
条件付き書式で無理矢理やるのは避けようかなとも思ったのですが、
遊びですからいいと思ってます。
でも、出題者解答は、ほんと大したものだと思いますよ。
それから、sakudaさんのROW(1:6)微妙にルールに反するのか?
ま大丈夫と思うがちょっと気になっただけ。
投稿情報: minmax | 2009年4 月25日 (土曜日) 午後 11時44分
>短くしようとすると悩ましく、良い問題ですね。
厄介=面白い=良い問題
と思います
投稿情報: からくち | 2009年4 月25日 (土曜日) 午後 11時51分
>それから、sakudaさんのROW(1:6)微妙にルールに反するのか?
なるほど、参照するのはB5だけとなってますね^^;
投稿情報: y sakuda | 2009年4 月25日 (土曜日) 午後 11時58分
からくちさん、どうもです!
確かに厳密には非常に厄介な問題でした。
私の出題の仕方も、あやふやな部分があり、
今更ながら反省しております。
条件付書式や表示形式で見た目だけでごまかす方法を除けば
おっしゃる通り、とても厄介で鬱陶しくなる。
実はこの問題、1年ほど前に思いついたもので
正に、からくちさんが指摘された
>B5に入力できるのは「A」「B」「AB」又は「200」「100」「300」の6種のみで
を純粋にやって、最初、感覚的に短い式で出来ると思っていたのが、
想像以上につまらない長い式になったため、嫌になって放っていました。
くまぷーさんが問題を募集されたので、漠然と、この問題を窮屈に考えずに
条件付書式や表示形式を解禁し見た目だけ出来ていればればいいとすれば
多少は面白い問題になるのではと送ったのですが、
私の説明が、下手っぴーな分、皆さんを困惑させてました・・・
>厄介=面白い=良い問題
>と思います。
いやー、ホントに出題するって難しいです、、m(__)m
投稿情報: む印 | 2009年4 月26日 (日曜日) 午前 01時17分
む印さん
ほんと良い問題でしたよ
次は私の問題ですが全く地震がありません!?
投稿情報: minmax | 2009年4 月26日 (日曜日) 午前 01時47分
minさん次回は御手柔らかに!
からくちさんも、「易しい?問題」をお願いしますm(__)m
投稿情報: む印 | 2009年4 月26日 (日曜日) 午前 02時01分
>>それから、sakudaさんのROW(1:6)微妙にルールに反するのか?
>なるほど、参照するのはB5だけとなってますね^^;
私の解釈では問題なしだと思います。
「参照するのはB5だけ」というのは
ワンセルでやれという指示だととりました。
投稿情報: くまぷー | 2009年4 月26日 (日曜日) 午前 05時37分
>minさん次回は御手柔らかに!
いや、かなりの難問だと思ふ・・・
考える時間がたくさんあったほうが
いいと思うので今日出題します。
投稿情報: くまぷー | 2009年4 月26日 (日曜日) 午前 05時41分
あ、、
おはようございますぅーーー
今回、条件付OKとあったので、
最初から、手抜きでした。
6種以外表示しないように
1)まず白文字(フォント)
2)6種だけ黒
=OR(B5=100,B5=200,B5=300,B5="A",B5="B",B5="AB")
で、ごまかしちゃいました。
でも、それにしては、式が中途半端でした。・・・・反省・・・・
投稿情報: ジョー3 | 2009年4 月26日 (日曜日) 午前 06時46分
かぶってなさそうなのは、
条件付書式付 57文字の
=CHOOSE(MOD(HEX2DEC(B5),9)+1,200,100,300,"A","AB",,,,"B")
くらいでした。
投稿情報: supermab | 2009年4 月26日 (日曜日) 午前 10時07分
supermabさんの良く分かりませんが、ずれちゃうんですが?
投稿情報: y sakuda | 2009年4 月26日 (日曜日) 午前 10時19分
>supermabさんの良く分かりませんが、ずれちゃうんですが?
こうすると大丈夫のようですね。
=CHOOSE(MOD(HEX2DEC(B5),9)+1,300,200,100,"AB","B",,,,"A")
それにしてもHEX2DECとは
凄いところから攻めてきた・・・
投稿情報: くまぷー | 2009年4 月26日 (日曜日) 午前 10時45分
>多少は面白い問題になるのではと送ったのですが、
いや 大変面白かったです
若し
>B5に入力できるのは「A」「B」「AB」又は「200」「100」「300」の6種のみで
>それ以外が入力された場合、若しくは未入力の場合はD5セルは無表示とする
これが無かったら面白さ半減どころか
1/10だったと思います
これをどう回避させるかを取り除いてしまったら・・・
色々な考えが浮かびましたが
残念ながらどれも愚案で
自身 気に入ったものが浮かびませんでした
>いやー、ホントに出題するって難しいです、、m(__)m
確かに
でもこれだけの問題を作れるって
凄いと思います
投稿情報: からくち | 2009年4 月26日 (日曜日) 午前 11時00分
>それにしてもHEX2DECとは
ですねーー
確かに文字がA~Fならこう言う発想もありでしたねーー
今回、書式にしろなんにしろ、素朴なとこから抜け切れなかったです^^;
投稿情報: y sakuda | 2009年4 月26日 (日曜日) 午前 11時06分
>ずれちゃうんですが?
ずれてました。
くまぷーさん、
直していただきありがとうございます m(_ _)m
今回はちっともみぢかく出来ませんでした。
36文字とは・・・
あっけに取られるばかりですねー *o*;
投稿情報: supermab | 2009年4 月26日 (日曜日) 午後 01時21分
おはようございます。
54:=CHOOSE(LEFT(HEX2DEC(B5)-7),300,"B",200,100,"A",,"AB")
54:=MID("300B 100200A AB",LEFT(HEX2DEC(B5)-7)*3-2,3)
36:=IF(N(B5),B5%,SEARCH(B5,"BAAB")&0&0)
ユーザー定義[=1]!B;[=2]A;!A!B
34:=IF(N(B5),B5%,SEARCH(B5,"BAAB")&0)
ユーザー定義[=1]!B;[=2]!A;A!B;@!0
35:=IF(B5>100,SEARCH(B5,"BAAB200300"))
ユーザー定義[=5]!A;[=8]!A!B;0!0!0;!B
MODは盲点でした。さらに短く出来ました。
32:=IF(B5>100,3-MOD(HEX2DEC(B5),9))
ユーザー定義[=-5]!A;[=0]!A!B;0!0!0;!B
投稿情報: kir | 2009年4 月26日 (日曜日) 午後 01時59分
>CODE関数使った解答
38:=IF(B5>100,66-CODE(UPPER(B5))+LEN(B5))
[=19]!A;[=18]!A!B;0!0!0;!B
小文字対応で無ければ・・・UPPERが文字数掛かってる。
投稿情報: kir | 2009年4 月26日 (日曜日) 午後 02時45分
やはり・・・・
短く工夫となると・・・・
kirさんも、、おいでにねりましたね・・・・
お元気そうで、嬉しいです。
投稿情報: ジョー3 | 2009年4 月26日 (日曜日) 午後 03時06分
supermabさん凄いですねぇ~
最初HEX2DECを見たとき
何かの呪文?と思ったくらいで
全く知りませんでした。
ヘルプを見てやっと理解でき、勉強になりました。
更に・・・
>MOD(HEX2DEC(B5),9) なんて・・・
相当使い慣れておられるのかなぁ?
kirさんもHEX2DEC関数ですかぁー
それに
>34:=IF(N(B5),B5%,SEARCH(B5,"BAAB")&0)
>ユーザー定義[=1]!B;[=2]!A;A!B;@!0
これには、やられました(>_<)>
で結局 >MOD(HEX2DEC(B5),9) で最短32で決着したみたいですね。
あと見たかったCODE関数ものまで、ありがとう御座いますd^^
UPPERかLOWERで大文字か小文字にまとめれば良かったんですねー
>でもこれだけの問題を作れるって
>凄いと思います。
からくちさんには、問題の奥深くに隠れていたものにまで
理解いただき有難う御座います。
EWでの、からくちさんの日記等での出題はどれも面白かった(難しかったけど・・・)です。
こちらでの出題も是非お願いしますd
投稿情報: む印 | 2009年4 月26日 (日曜日) 午後 03時51分
>EWでの、からくちさんの日記等での出題はどれも面白かった(難しかったけど・・・)です。
>こちらでの出題も是非お願いしますd
×2
投稿情報: ジョー3 | 2009年4 月26日 (日曜日) 午後 05時05分
>でもこれだけの問題を作れるって
>凄いと思います。
x2
また、
楽しませて頂きましたーーーw
投稿情報: supermab | 2009年4 月26日 (日曜日) 午後 05時21分
からくちさん・・・
>こちらでの出題も是非お願いしますd
×3
でもお手柔らかに・・・(^^ゞ
投稿情報: くまぷー | 2009年4 月26日 (日曜日) 午後 06時13分
kirさんのどれもうなりましたが・・・・
>IF(N(B5),
Nのこの使い方は思いつきませんでした
また、私は書式の使い方はヘタクソなんですが、それにしても、全く付いていけない^^;
投稿情報: y sakuda | 2009年4 月26日 (日曜日) 午後 07時11分
反省!!!
わたしから遊び心を取ってしまったら
わたしらしさが無くなってしまう
一人くらい無駄な式を書く奴がいてもいいのでは・・・
と思って来た
お遊びだからこそ
>{=VLOOKUP(B5,CHOOSE(IF(N(B5),{1,2},{2,1}),{100;200;300},{"B";"A";"AB"}),2,0)}
この様な無駄式を書く気にもなれる
何故こんな式を態々書いたのか
ここの皆様方には関係ないかと思いますが
配列数式をいま勉強している最中とか
まだ今一つ理解出来ていない
と思っている人たちも沢山いると思います
その様な方達が上の式を見たとき
若し { } が付いていなかったとしたら
配列数式と直ぐに理解出来たでしょうか
これも立派?な配列数式です
でもこんな事をする意味が無い無駄式では
>kirさんのどれもうなりましたが・・・・
>>IF(N(B5),
>Nのこの使い方は思いつきませんでした
誰も見ていない
つまり態々書く必要など無かった
反省!!!
でも・・・
>わたしから遊び心を取ってしまったら
う~ん・・・どうしよう・・・
投稿情報: からくち | 2009年4 月26日 (日曜日) 午後 11時23分
>誰も見ていない
>つまり態々書く必要など無かった
失礼。
からくちさんも使ってましたね。しかもTまで・・・・
からくちさんのは、全体像把握する(できないのもありますが)のに目が言って細部見てなかった^^;
投稿情報: y sakuda | 2009年4 月27日 (月曜日) 午前 12時00分
じつは、あんぐり・・・・
例えば、
>=CHOOSE(SEARCH(T(B5)&N(B5)/100,"A01B02AB03"),200,"","B",100,,"A",300,,,"AB")
同じ関数使っていながら、、
考え込まれた式・・・
表示形式で、6種以外は白くした
私の式とは違うなーー・・・・
・・・・てなかんじ・・・・・
投稿情報: ジョー3 | 2009年4 月27日 (月曜日) 午前 09時59分