« 関数で出来ますか~? 第15問 A⇔200 | メイン | 関数で出来ますか~? 第16問 地震 »

2009年4 月25日 (土曜日)

コメント

くまぷー

>=VLOOKUP(B5,{"B",100;"A",200;"AB",300;100,"B";200,"A";300,"AB"},2,)

む印さんのものと同じです。
こちらはHLookupを使いましたが・・・
かあなりの高確率でsakudaさんのものと
同じだと思います。

ジョー3

うはーーーー
皆さんの答えは・・・全部凄いですーーー

私のは、単純&進歩しなかった。

59:  =CHOOSE(SEARCH(B5,"a200b100ab300"),2,"A",,,1,"B",,,3,,"AB")

表示形式で、 0"00" だったかな?
あと、条件付き書式で、エラーを消しただけ、、
今回も、がんばれなかったなーー

む印さん・・・・
>   <条件付書式>
数式が:=IF(B5>"",SEARCH(B5,"AB "&B5)<3,LEN(B5%)*B5%<4)
すげーーーー・・・・
本体より、、高度だなーーー

ジョー3

あ・・・・
名前を書かないで、
叱られちゃった。

>=VLOOKUP(B5,{"B",100;"A",200;"AB",300;100,"B";200,"A";300,"AB"},2,)

気付かなかったなーーーー

む印

>む印さんのものと同じです。

そうでしたか、、真っ当なやつでは私も
表引きしか思い当たりませんでした、、
 
 
>表示形式で、 0"00" だったかな?

ジョー3さんは早くから表示形式使用の
短縮を思いつかれてたんですねぇー、凄い!
それと、CHOOSE関数使うのは全く考えませんでした、、
 
 
実は最初FIND関数でA・Bの判断させてて、
小文字を入力したらエラー、www
一旦MATCH関数に切り替えました。
SEARCH関数の存在を思い出したのは
だいぶ後になってからで、
物忘れがひどくなって来たことを実感しました。

minmax

あんまり出来なかったけど
ちょっとだけやっていました。
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文字増加です。

ジョー3

皆さんが、、
sakudaさん、くまぷーさんがた、、
1関数って言っておられたから、、
IFかなーーーって、思った。

> =CHOOSE(N(B5)%+SEARCH(T(B5),"a   ab"),2,"B","A","AB",3,1)
同じ関数使っても・・・・
ジョー3=単純
minmaxさん=高度だなーー

>実は最初FIND関数でA・Bの判断させてて、
実は、おらもやった。

かず

べたべたに思い付いたのが、
=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))

ジョー3

>考えてもさっぱりでした。

>=INDEX({200,100,300,"A","B","AB"},MATCH(B5,{"A","B","AB",200,100,300},0))

かずさんーーー・・・
わかりやすいですーーーーこれも、、

minmax

>=IF(N(B5),B5%-2,SEARCH(B5,"BAAB")&0)
やられたってかんじですね。

minmax

かずさんのIFが一番素直ですね。

ますたあ

VLOOKUP関数でたぶん出来るんだろうな~と思っていましたが、
配列を2列にする方法が最後まで分かりませんでした。^^;
断念。(-_-;)

結局、最初に考えた式からは一文字しか短縮できませんでした。
71文字です。(^^ゞ
=CHOOSE(MATCH(B5,{"A";"B";"AB";200;100;300},),200,100,300,"A","B","AB")

問題をそのまま式にしたような単純な式しか...。^^;

y sakuda

今帰って来て見始めたところですが、67はHlookupでくまぷーさんと同じですねーー

y sakuda

む印さんの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


くまぷー

>>=IF(N(B5),B5%-2,SEARCH(B5,"BAAB")&0)
>やられたってかんじですね。


確かにこれは凄まじいですね~

くまぷー

>67はHlookupでくまぷーさんと同じですねーー

やはり、そうでしたか~

くまぷー

かずさんの・・・

=IF(B5="A",200,IF(B5="B",100,IF(B5="AB",300,IF(B5=200,"A",IF(B5=100,"B",IF(B5=300,"AB",""))))))

・・・が素直さで一番かな~

む印

かずさんの、IF関数一つの式、
からくちさんが「基本?」といってたのは
この式って感じですねぇd^^

minさんの式は基本ジョー3さんと同じみたいだけど
NとTの関数をうまく使ってますねぇー
特にT関数は全く発想できなかったです!

ますたあさんもCHOOSE関数での分岐ですかぁー
これが頭に浮かんできませんでした、、、

おおーーー
y sakudaさんのMIDの第2引数でSEARCH関数を
使う手法はスマートでカッコいいですーーーーーd
同じ関数使ってるんですが、この発想には脱帽です!


からくち

今回は少々(いや、結構・・・かな)悪役になります

今回の問題は思ったよりはるかに厄介と感じました
もちろん文字数をより少なくとした場合ですが
理由は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 ?

今回の問題は見た目以上に厄介では

からくち

>かずさんの・・・
=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文字と思います

y sakuda

そう言えば、今回は配列数式は出てきてないですね。
私が最初の頃やったのは配列数式で83です。(書式はなし)
{=MID(" B A AB 200100300",SUM((B5={100;200;300;"A";"B";"AB"})*ROW(1:6))*3+1,3)}

からくち

>関数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つも無い
お遊び(無駄)のみ
むずかしい・難しい・ムズカシイ・・・

minmax

>今回の問題は見た目以上に厄介では
ほんとにそうですね。
短くしようとすると悩ましく、良い問題ですね。
条件付き書式で無理矢理やるのは避けようかなとも思ったのですが、
遊びですからいいと思ってます。
でも、出題者解答は、ほんと大したものだと思いますよ。

それから、sakudaさんのROW(1:6)微妙にルールに反するのか?
ま大丈夫と思うがちょっと気になっただけ。

からくち

>短くしようとすると悩ましく、良い問題ですね。

厄介=面白い=良い問題
と思います

y sakuda

>それから、sakudaさんのROW(1:6)微妙にルールに反するのか?
なるほど、参照するのはB5だけとなってますね^^;

む印

からくちさん、どうもです!

確かに厳密には非常に厄介な問題でした。
私の出題の仕方も、あやふやな部分があり、
今更ながら反省しております。

条件付書式や表示形式で見た目だけでごまかす方法を除けば
おっしゃる通り、とても厄介で鬱陶しくなる。

実はこの問題、1年ほど前に思いついたもので
正に、からくちさんが指摘された
>B5に入力できるのは「A」「B」「AB」又は「200」「100」「300」の6種のみで

を純粋にやって、最初、感覚的に短い式で出来ると思っていたのが、
想像以上につまらない長い式になったため、嫌になって放っていました。

くまぷーさんが問題を募集されたので、漠然と、この問題を窮屈に考えずに
条件付書式や表示形式を解禁し見た目だけ出来ていればればいいとすれば
多少は面白い問題になるのではと送ったのですが、
私の説明が、下手っぴーな分、皆さんを困惑させてました・・・

>厄介=面白い=良い問題
>と思います。

いやー、ホントに出題するって難しいです、、m(__)m

minmax

む印さん
ほんと良い問題でしたよ
次は私の問題ですが全く地震がありません!?

む印

minさん次回は御手柔らかに!

からくちさんも、「易しい?問題」をお願いしますm(__)m

くまぷー

>>それから、sakudaさんのROW(1:6)微妙にルールに反するのか?
>なるほど、参照するのはB5だけとなってますね^^;

私の解釈では問題なしだと思います。
「参照するのはB5だけ」というのは
ワンセルでやれという指示だととりました。


くまぷー

>minさん次回は御手柔らかに!

いや、かなりの難問だと思ふ・・・
考える時間がたくさんあったほうが
いいと思うので今日出題します。

ジョー3

あ、、
おはようございますぅーーー

今回、条件付OKとあったので、
最初から、手抜きでした。

6種以外表示しないように
1)まず白文字(フォント)
2)6種だけ黒
=OR(B5=100,B5=200,B5=300,B5="A",B5="B",B5="AB")
で、ごまかしちゃいました。

でも、それにしては、式が中途半端でした。・・・・反省・・・・

supermab

かぶってなさそうなのは、

条件付書式付 57文字の
=CHOOSE(MOD(HEX2DEC(B5),9)+1,200,100,300,"A","AB",,,,"B")

くらいでした。

y sakuda

supermabさんの良く分かりませんが、ずれちゃうんですが?

くまぷー

>supermabさんの良く分かりませんが、ずれちゃうんですが?

こうすると大丈夫のようですね。

=CHOOSE(MOD(HEX2DEC(B5),9)+1,300,200,100,"AB","B",,,,"A")

それにしてもHEX2DECとは
凄いところから攻めてきた・・・

からくち

>多少は面白い問題になるのではと送ったのですが、
いや 大変面白かったです

若し
>B5に入力できるのは「A」「B」「AB」又は「200」「100」「300」の6種のみで
>それ以外が入力された場合、若しくは未入力の場合はD5セルは無表示とする
これが無かったら面白さ半減どころか
1/10だったと思います
これをどう回避させるかを取り除いてしまったら・・・

色々な考えが浮かびましたが
残念ながらどれも愚案で
自身 気に入ったものが浮かびませんでした

>いやー、ホントに出題するって難しいです、、m(__)m
確かに
でもこれだけの問題を作れるって
凄いと思います

y sakuda

>それにしてもHEX2DECとは
ですねーー
確かに文字がA~Fならこう言う発想もありでしたねーー
今回、書式にしろなんにしろ、素朴なとこから抜け切れなかったです^^;

supermab

>ずれちゃうんですが?

ずれてました。

くまぷーさん、
直していただきありがとうございます m(_ _)m

今回はちっともみぢかく出来ませんでした。
36文字とは・・・
あっけに取られるばかりですねー *o*;

kir

おはようございます。
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

>CODE関数使った解答
38:=IF(B5>100,66-CODE(UPPER(B5))+LEN(B5))
[=19]!A;[=18]!A!B;0!0!0;!B
小文字対応で無ければ・・・UPPERが文字数掛かってる。

ジョー3

やはり・・・・
短く工夫となると・・・・
kirさんも、、おいでにねりましたね・・・・

お元気そうで、嬉しいです。

む印

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

ジョー3

>EWでの、からくちさんの日記等での出題はどれも面白かった(難しかったけど・・・)です。
>こちらでの出題も是非お願いしますd
×2

supermab

>でもこれだけの問題を作れるって
>凄いと思います。

x2

また、
楽しませて頂きましたーーーw

くまぷー

からくちさん・・・

>こちらでの出題も是非お願いしますd
×3

でもお手柔らかに・・・(^^ゞ

y sakuda

kirさんのどれもうなりましたが・・・・
>IF(N(B5),
Nのこの使い方は思いつきませんでした
また、私は書式の使い方はヘタクソなんですが、それにしても、全く付いていけない^^;

からくち

反省!!!

わたしから遊び心を取ってしまったら
わたしらしさが無くなってしまう
一人くらい無駄な式を書く奴がいてもいいのでは・・・
と思って来た

お遊びだからこそ
>{=VLOOKUP(B5,CHOOSE(IF(N(B5),{1,2},{2,1}),{100;200;300},{"B";"A";"AB"}),2,0)}
この様な無駄式を書く気にもなれる

何故こんな式を態々書いたのか

ここの皆様方には関係ないかと思いますが
配列数式をいま勉強している最中とか
まだ今一つ理解出来ていない
と思っている人たちも沢山いると思います
その様な方達が上の式を見たとき
若し { } が付いていなかったとしたら
配列数式と直ぐに理解出来たでしょうか

これも立派?な配列数式です

でもこんな事をする意味が無い無駄式では
>kirさんのどれもうなりましたが・・・・
>>IF(N(B5),
>Nのこの使い方は思いつきませんでした
誰も見ていない
つまり態々書く必要など無かった

反省!!!

でも・・・
>わたしから遊び心を取ってしまったら
う~ん・・・どうしよう・・・

y sakuda

>誰も見ていない
>つまり態々書く必要など無かった
失礼。
からくちさんも使ってましたね。しかもTまで・・・・
からくちさんのは、全体像把握する(できないのもありますが)のに目が言って細部見てなかった^^;

ジョー3

じつは、あんぐり・・・・
例えば、

>=CHOOSE(SEARCH(T(B5)&N(B5)/100,"A01B02AB03"),200,"","B",100,,"A",300,,,"AB")
同じ関数使っていながら、、
考え込まれた式・・・
表示形式で、6種以外は白くした
私の式とは違うなーー・・・・
・・・・てなかんじ・・・・・

コメントの確認

コメントのプレビュー

プレビュー中です。コメントはまだ投稿されていません。

処理中...
コメントを投稿できませんでした。エラー:
コメントを投稿しました。 さらにコメントを投稿する

入力された文字と数字は画像と一致していません。再度入力してください。

最後に、下の画像の中に見える文字と数字を入力してください。これはプログラムを使ってコメントを自動的に投稿するのを防ぐために行われています。

画像を読み取れない場合は 別の画像を表示してください。

処理中...

コメントを投稿

アカウント情報

(名前は必須です。メールアドレスは公開されません。)

2024年8 月

        1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

TOP メニュー