« 関数で出来ますか~? 第19問 ストレート | メイン | 関数で出来ますか~? 第20問 何個あるでしょう? »

2009年5 月23日 (土曜日)

コメント

y sakuda

恥じかきそうだから早々に投稿しちゃいます^^;

最初にできたものの発展形では100を切れませんでした。117
{=AND(COUNTIF(B2:F2,MID("1 2 3 4 5 6 7 8 9 10J*Q*K*1",((MIN(B2:F2)=1)*(MAX(B2:F2)>5)*9+MIN(B2:F2)+ROW(1:5))*2-3,2)))}

今日になって遅まきながら、Var使えるのに気が付いたのですが、短縮できず、
79とロイヤル非対応の51
{=VAR(IF(B2:F2<11,(B2:F2=1)*(MAX(B2:F2)>5)*13+B2:F2,FIND(B2:F2,"JQK")+10))=2.5}

{=VAR(IF(B2:F2<11,B2:F2,FIND(B2:F2,"JQK")+10))=2.5}

裏口は86と54です
{=AND(COUNTIF(B2:F2,OFFSET(DATA!D1,(MIN(B2:F2)=1)*(MAX(B2:F2)>5)*9+MIN(B2:F2)-1,,5)))}
{=AND(COUNTIF(B2:F2,OFFSET(DATA!D1,MIN(B2:F2)-1,,5)))}

y sakuda

順子と同じだということすら思い出さずにやってた^^;
裏口のこういう使い方も思いつかなかったですねーー
しかし・・・・ロイヤル対応は、またえらく素朴なwww

minmax

あら~
VARだと1文字減るのね。
やっぱり紙には限界があるな~

私のは、ちょっとお待ちを

その間にほかの方が出してくれるかもですが、、

y sakuda

>VARだと1文字減るのね。
と言うことはDevsq使ったのかな?
少数点が付かないのでよさそうですが、=10で二桁になるのでVarに切り替えました^^

む印

今回も、からくちさんに引っ張られて短縮できた次第です、、

ロイヤル対応
(表)
58:{=VARP(FIND(RIGHT(B2:F2),-OR(B2:F2>9)&"KQJ0987654321"))=2}
60:{=VARP(FIND(RIGHT(B2:F2),"1234567890JQK1",OR(B2:F2>9)+1))=2}
93:{=AND(MMULT(SMALL(FIND(RIGHT(B2:F2),-OR(B2:F2>9)
&"KQJ0987654321"),ROW(1:4)+{1,0}),{1;-1})=1)}

(裏)
63:{=VARP(IF(OFFSET(DATA!D1:D13,OR(B2:F2>9),)=B2:F2,ROW(1:13)))=2}
98:{=AND(MMULT(LARGE(IF(OFFSET(DATA!D1:D13,OR(B2:F2>9),)=B2:F2
,ROW(1:13)),ROW(1:4)+{0,1}),{1;-1})=1)}

ロイヤルなし
(裏)
42:{=VARP(IF(DATA!D1:D13=B2:F2,ROW(1:13)))=2}

ジョー3

ただいまーーー

結婚式にいってきた。

飲まない!!っていったが、
ここの皆さんが、のめのめ!!
あっちでものめのめ!!

あんまり期待されて断るのもなんだから、

ちょっとだけ、、、、

の、、つもりが、、
けっこう、、、呑んできた。

結婚式の内容なんてどうでも良かった。

隣の、某有名会社の会長さんと、
(三沢だから、たいしたことないが)
((三沢では有名というだけ))
おしゃべりを楽しんできた。

市長さんの話は、ちょっと長かった。

あ、、、
式ですが、、、

ロイヤルなし・・・・表だけ、、
{1;2} を絡めて57ぐらいでトップを狙ったが・・・・

なんでだろう!!・・・・思い通りに動かなかった。とほほ、、、、

minmax

あら~VARPだと2文字減るのか~。

からくちさんの想定の範囲だと思いますが・・・
66
{=DEVSQ(FIND(RIGHT(B2:F2),IF(AND(B2:F2<6),1)&"234567890JQK1"))=10}
64
{=DEVSQ(FIND(RIGHT(B2:F2),IF(MAX(B:F)=5,1)&"234567890JQK1"))=10}
46(裏)
{=DEVSQ(MOD(DATA!B1:B5-2^(MAX(B:F)>9),13))=10}

ロイヤル無し
47
{=DEVSQ(FIND(RIGHT(B2:F2),"1234567890JQK"))=10}
33(裏)
{=DEVSQ(MOD(DATA!B1:B5-1,13))=10}

ってことでVARPだと短いのが
あり44となし31になるのかな?

ジョー3

あ、、、肝心の式・・・
結婚式でなく。エクセル式

{=DEVSQ(FIND(RIGHT(B2:F2),"1234567890JQK"))=10}

ロイヤル:
or と {1;2} あたりで、料理できそうで出来なかった。=実力不足。

ジョー3

あーーーー
あーーーーー

minmaxさんと、、100%おんなジーーー

でも、彼と同じなら、、
超・・・・
嬉しいかもーーー

minmax

>嬉しいかもーーー ×2

minmax

くまぷーさんのロイヤル対応” { ”の位置がずれている。

minmax

sakudaさんの
期待どおりの解答…
かなり難解
すごー

minmax

む印さんのも?

で、みなさんどこいったの?

y sakuda

> みなさんどこいったの?
ちょっと散歩に行ってました^^
で、帰って来て鑑賞してましたが・・・・
む印さんの分かるような分からないような・・・・

今回私はVar等を使うのに昨日まで気が付かず、その段階で終わってましたねーー
また、10の処理にRightにして0と言うのにも気が付いていなかったです。
こちらは自分でもなんで気が付かなかったのか不思議なくらいですけど。

>期待どおりの解答…
>かなり難解
いえ、素朴にやって、行き詰ったままですので、単にこなれてないだけかと・・・
本格参戦できたのが昨晩見たいな物ですから完敗モードですねーー

ジョー3

>で、みなさんどこいったの?
どこがで、呑んでると・・・
思う・・・・

minmax

みんな飲みに行ったのか?
誘ってくれないから…
寂しく留守番してた。

kir

こんばんは。ロイヤル対応(表)のみ
107:=OR(MMULT(N(COUNTIF(B:F,SUBSTITUTE(MID("1234567890JQK1",ROW(1:10)+COLUMN(A:E)-1,1),0,10))=1),ROW(1:5)^0)=5)
・・・「順子」思い出してVAR採用・・・
89:{=OR(VAR(FIND(RIGHT(B2:F2),"1234567890JQK"))=2.5,AND(COUNTIF(B2:F2,{10,"J","Q","K",1})))}
80:{=OR(VAR(FIND(RIGHT(B2:F2),"234567890JQK1"))=2.5,AND(COUNTIF(B:F,{1,2,3,4,5})))}
72:{=VAR(FIND(RIGHT(B2:F2),RIGHT("1234567890JQK1",13+COUNTIF(B:F,2))))=2.5}
69:{=VAR(FIND(RIGHT(B2:F2),RIGHT("1234567890JQK1",13+OR(B2:F2=2))))=2.5}
64:{=VAR(FIND(RIGHT(B2:F2),IF(OR(B2:F2=2),1)&"234567890JQK1"))=2.5}

む印さんの裏
OFFSET(DATA!D1,OR(B2:F2>9),,13)
高さ指定で一文字短縮?

minmaxさんは50台どころか40台ですか・・・
む印さんとminmaxさんのコラボで43?{=VARP(MOD(DATA!B1:B5-2^OR(B2:F2>9),13))=2}

y sakuda

kirさんの107は非配列数式ですか。
良く分からないのですが、とにかくすごい!
ただ・・・・物凄く重いですねーー
この式活かすとStraightジェネレータがまともに動かなくなったw

y sakuda

しかし、回答を並べて眺めてみると、ロイヤルの対応の考え方がバリエーションが結構あって面白いですね。

それにしても、minmaxさんの33、裏でロイヤル非対応と言っても凄いですね。
しかもこれを紙でやっちゃうとは^^;
私もアイデアはPCの前ではなく、電車の中なんかで思いつくことが多いのですが、実際にやってみると2/3くらいはそのままではダメですねーー

y sakuda

しかし・・・・
くまぷーさん出てこないですねーー
必死こいて仕事してるのかなw

からくちさんのも早く見たいんですけど出てきてくらないなーー

minmax

>minmaxさんの33
結構単純なものです。
意外と単純なものが短い・・・
今回は、短いものだけ考えました。
今までの感覚からいえば、
短くしようと思ったときは、なるべく単純に発想することを心がけます。

ますたあ

こんなのしか出来なかったです。

{=VAR(MATCH(B2:F2,{1,2,3,4,5,6,7,8,9,10,"J","Q","K"},0))=2.5}

しかも、返されるのは#N/A...。(-_-;)
数式バーではTRUE判定できるんだけど

後のは恥ずかしくて出せません。^^;
超初心者のような・・・・・。
今回参加しなかったことにしようかな。(^^ゞ

minmax

>初心者のような・・・・・。
結構分かり易い式なのでは?
好きです。そういうの

くまぷー

みなさん、お早うございます。

>くまぷーさん出てこないですねーー
>必死こいて仕事してるのかなw

おいらは小さい頃から、追い込まれないと
エンジンがかからないタイプ・・・(^^ゞ


くまぷー

いや~、それにしても一見しただけでは
何がどうなっているのかよくわからない
難解な式のオンパレード・・・

やはり、Var2.5のお仲間が・・・

10の処理にRightにして0と言うのにも気が付いていなかったです。 ×2

くまぷー

>くまぷーさんのロイヤル対応” { ”の位置がずれている。

あ、いかん (>_<)
ご指摘ありがとうございます。
直します。m(__)m

くまぷー

>しかも、返されるのは#N/A...。(-_-;)

ますたあさん、お早うございます。
特に不具合はないようですが・・・

y sakuda

>特に不具合はないようですが・・・
くまぷーさんとこではちゃんと動くのですか?
私のところではダメです。

私も今回Matchを使おうとしたのですが、ますたーさんと同じ様な症状がでました。
どうもMatchを配列数式の中で使用すると相性が悪いみたいなのであきらめました。


くまぷー

>くまぷーさんとこではちゃんと動くのですか?

動いています。問題ありません。

こちらの判定法

1.私のロイヤルストレート未対応版をH2に。
(検証したい式がロイヤルストレート対応なら、私のロイヤルストレート対応版をH2に・・・)

2.ますたあさんの式をH3に。

3.下のマクロで検証

Sub Check()
Dim i As Long
Dim Count As Long
Dim Flag As Boolean

Count = 0

Do While Count < 10
i = 1: Flag = False
Do While Flag = False
Cells(1, 1) = i
If Cells(2, 8) = True Then
Flag = True
If Cells(3, 8) = False Then GoTo NG
Count = Count + 1
Cells(2, 1) = Count
End If
i = i + 1
Loop
Loop
MsgBox "OK"
Exit Sub

NG:
MsgBox Count & "回でNG"


End Sub

私の式が正しいという前提ですので
そうでなければ無意味ですが・・・(^^ゞ

くまぷー

あ、検証の回数を変えたければ

Do While Count < 10

の定数10を変えて下さい。
10は検証回数10回です。
20回なら20に・・・

y sakuda

>動いています。問題ありません。
Excelのバージョンはなんでしょうか?
私のところは2003でやってます。


くまぷー

>Excelのバージョンはなんでしょうか?

2007です。

y sakuda

検証プログラムがどうこうというより、#N/Aになってますから
If Cells(3, 8) = False Then GoTo NG
の所で型の不一致でエラーになります。
これは私のプログラムで式を選択状態にして動かした時も同じです。

くまぷー

>検証プログラムがどうこうというより、#N/Aになってますから

あ、エクセル2000で開いたら、#N/Aでした。
そう言う意味でしたか・・・

y sakuda

今私も検証してました。
2007で開くと互換モードでもxlsxmでも正常に行きますね。
この問題で私が試していた式は、確かIFの中でMatchを使っており、Matchが生成する配列には確かに#N/Aが入っているが最終的には選択されないという形だったので、下位にエラーがあると表にでなくても拾ってくるのかと思ってましたが、ますたーさんの例ではエラーにはならないはずで、バグくさいですね。

y sakuda

先週は私としてはフラストレーションが溜まる一週間でしたが面白かった^^
ところで今週からはジョー3の2連発でしたっけ?

ところで、からくちさんはどこにいるんだろ?

くまぷー

20回む印さん
21回sakudaさん

の予定で

ジョー3さんは22回ですね。

その後、からくちさんが続きます。

y sakuda

次のむ印さんのもまた楽しみ^^

そう言えば、Matchだけではなく、Lookup使用のやつも2003ではだめでしたが、2007では動きますね。
{=VAR(IF(B2:F2<11,B2:F2,LOOKUP(B2:F2,{"J","K","Q";11,13,12})))=2.5}
尤も、LookupもMatchのやつも先週途中で整理して消しちゃったので、その後どうしようとしていたのか覚えてないのですが、とにかくJQKを数値かしようとしてました^^;

くまぷー

>Matchだけではなく、Lookup使用のやつも2003ではだめでしたが、2007では動きますね。

・・・ってことは2007の方が
機能的には使いやすくなったってことですね。
遊びに使うにはバージョンアップはお勧め?
実務ならば2000で十分すぎるけど・・・

y sakuda

>遊びに使うにはバージョンアップはお勧め?
どうなんでしょ?
古くからのユーザーには評判悪いし普及してないようですが、田中さんによれば、今年の表計算コンテストでは2007の回答が相当増えていたそうです。
また、講習会なんかでも2007のユーザーの増え方は顕著だそうです。
ただし、これは今購入するプレインストに2007が入っているためだと思いますが、結局2007から始めるユーザーも多いわけでそういう方達にはすんなり受け入れられているようです。

私も個人的には2007は殆ど使ってませんし、このごろサボってますが公開用になにか作ると関数にしろVBAにしろ2007限定と言うわけには行かないのでやはり2003を使いますね。
さすがにそろそろ97、2000は意識するのやめようと思ってますけど。

からくち

出揃っていますね
と言うかあたりまえですね

予想通り殆どの式にFINDが使われているようで
一般的?にやはりこの問題には外せない関数ですね

そこであえてこのFIND使用禁止で少々作ってみました
もちろんですが無駄式です

FINDの代わりにSUBSTITUTEを使ったら
{=DEVSQ(-SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
SUBSTITUTE(B2:F2,10,"E"),1,(MAX(2:2>5)*13+1),"K",13),"Q",12),"J",11),"E",10))=10}

考え方としてある意味今回の中で1番好きかも(適正なものも含めて)
=COUNT(0/COUNTIF(2:2,SUBSTITUTE(MID("1234567890JQK1",MIN(2:2)+(MAX(2:2)-MIN(2:2)=9)*9+{0,1,2,3,4},1),0,10)))=5

上の式のFREQUENCY版
=FREQUENCY(COUNTIF(2:2,SUBSTITUTE(MID("1234567890JQK1",MIN(2:2)+(MAX(2:2)-MIN(2:2)=9)*9+ROW(1:5)-1,1),0,10)),0)=0

ここまで遊べば何方とも被らない (究極の無駄式)


からくち

あっ そうそう 忘れていました
誰からも相手にされていない可哀想な関数に光を・・・Vol.?

{=CORREL(SMALL(FIND(RIGHT(B2:F2),2-OR(2:2=2)&"234567890JQK1"),ROW(1:5)),{1,2,3,4,5})=1}


む印

豚インフルで各種集会が悉く中止。
うちも、調整で余計な仕事が増え、
ゆうべは解答提出したら、いつのまにか眠ってました、、

ところで、
くまぷーさんと、minさんの裏(DATA!G1:K1や、DATA!B1:B5)
ここの利用は全く気が付きませんでした、、
特にminさんの-1は流石ですねぇ~d
私の裏利用は最初にMATCHが使えないから後回しにして
余り深く研究してませんでした。
途中でロイヤルストレートフラッシュ出すことにハマって
腱鞘炎になるかも?ってぐらいクリックしてました。^^;

あと、y sakudaさんのCOUNTIFとMINの組合せで判定させる発想にもうなりました!
いつも乍、カッコいい式ですねぇー

それからkirさま、
>OFFSET(DATA!D1,OR(B2:F2>9),,13)
高さ指定で一文字短縮?
一応高さ指定も考えたのですが
幅指定は省略できないと思ってました、、
また一つ勉強になりましたm(__)m

>次のむ印さんのもまた楽しみ^^
くまぷーさんの問題真似てつくってみたのですが
自分でやってみたら、常連さんには物足りない問題でした。
箸休めと思ってもらえれば助かります・・・

む印

からくちさんの無駄式?
式一つ目、括弧をちょっと修正でOK
{=DEVSQ(-SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
SUBSTITUTE(B2:F2,10,"E"),1,MAX(2:2>5)*13+1),"K",13),"Q",12),"J",11),"E",10))=10}

CORRELの式、一部の判定でNG???

ジョー3

CORREL??
ヘルプ見ても・・・???

む印

>式一つ目、括弧をちょっと修正でOK
あら?修正の仕方も間違ってる・・・
よく解らなくなっちゃった~~~~

y sakuda

からくちさんの面白いというか、面白いかどうか判定するほど理解できてませんw
特にCorrel使って何が起こってるのか^^:
>からくちさんの無駄式?
多分これで良いと思います(山勘で修正)

{=DEVSQ(-SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
SUBSTITUTE(B2:F2,10,"E"),1,MAX(2:2>5)*13+1),"K",13),"Q",12),"J",11),"E",10))=10}

>あと、y sakudaさんのCOUNTIFとMINの組合せで判定させる発想にもうなりました!
>いつも乍、カッコいい式ですねぇー
今回なぜかVar系を思いつかず、最小値から積み上げる方法しか思いつかなかっただけです^^;

minmax

{=DEVSQ(-SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2:F2,10,"E"),1,(MAX(2:2)>5)*13+1),"K",13),"Q",12),"J",11),"E",10))=10}
かと?
(MAX(2:2>5)を
(MAX(2:2)>5)に

からくち

あらあら すみません
上手く映せて無かったですね

{=DEVSQ(-SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(B2:F2,10,"E"),1,(MAX(B2:F2)>5)*13+1),"K",13),"Q",12),"J",11),"E",10))=10}

今度はどうかな・・・

では序にもう1つ
{=DEVSQ(CHOOSE(FIND(B2:F2,"1JQK"&B2:F2),OR(2:2>5)*13+1,11,12,13,B2:F2))=10}

y sakuda

からくちさんのCorrel、Covarに変えても同じですね(多分)
{=COVAR(SMALL(FIND(RIGHT(B2:F2),2-OR(2:2=2)&"234567890JQK1"),ROW(1:5)),{1,2,3,4,5})=2}
しかし、良くこんな物使えると言う発想が出てきますね。
使うまでの手順も大変だしw

くまぷー

CorrelもそうだけどCovarも相当なモンだと思ふ・・・
使ったこともないし、動きもようわからん・・・

お二人とも・・・

>しかし、良くこんな物使えると言う発想が出てきますね。 ×2

からくち

おはようございます

>Correl、Covarに変えても同じですね
いえ
わたしも同様にCOVARが頭を過ぎりました
しかしこの関数は積の平均ですので・・・

2・2・2・2・7 ~ 8・8・8・8・K
などなど

y sakuda

>2・2・2・2・7 ~ 8・8・8・8・K
なるほど。
誤判定になるケースがあり得るのですか^^;

コメントの確認

コメントのプレビュー

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

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

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

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

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

処理中...

コメントを投稿

アカウント情報

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

2024年3 月

          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 メニュー