第53回 十枚の領収書(その2)
ジョー3さんから「MAB53」という問題ファイルが送られてきた。
これは例の「ナップサック問題」で「関数で出来ますか~?」の
第4回「十枚の領収書」で既に取り上げたものだと思うのだが・・・
【問題ファイル】
*
*
*
*
*

ジョー3さんから「MAB53」という問題ファイルが送られてきた。
これは例の「ナップサック問題」で「関数で出来ますか~?」の
第4回「十枚の領収書」で既に取り上げたものだと思うのだが・・・
【問題ファイル】
*
*
*
*
*
supermabさんから「関数で出来ますか~?」用に頂いた問題を
倉庫の奥に封印していました。しかし、興味があるので見せてみろと
いう声が高まってきたのでその封印をときます。
それは・・・オイラーのΦ関数です。
**************************************************************************************
オイラーのφ関数は、
正の整数 n に対して、1 から n までの自然数のうち
n と互いに素なものの個数を φ(n) として与えることによって定まる
数論的関数 φ である。
例えば、1, 2, 3, 4, 5, 6 のうち 6 と互いに素なのは 1, 5 の 2 個であるから、
定義に拠れば φ(6) = 2 である。
また例えば 1, 2, 3, 4, 5, 6, 7 のうち 7 以外は全て 7 と互いに素だから、φ(7) = 6 と定まる。
慣例的に φ(n) と表記されるため、オイラーの φ 関数(ファイかんすう、phi function)とも呼ばれる。
※:上の説明は、「http://ja.wikipedia.org/wiki/オイラーのφ関数」 の引用です。
問題
セルC4に2以上1000以下の整数を入力し、それをnとする時、
φ(n)をセルC6に表示させよ。
(supermabさん談)
*
*
*
*
*
supermabさんの参考ファイル:up0390.zipをダウンロード
出題時の解答例です。
=MID(
SUBSTITUTE(
SUBSTITUTE(
B$5&B$6&B$7&B$8&B$9,F3,""),F4,""),
INT(RAND()*(10-ROW()))*2+1,2)
(ジョー3さん談)
3時間授業です
科目選択は、5教科(対象科目)から3教科ランダムに決めます
1時間目、2時間目、3時間目は別な科目です
1時間目から、2、3時間目が自動的に決ってはいけません
確率は、公平が望ましいです
F9で切り替わるようにお願いいたします
関数のみです
f5セルに入力
f6、f7にその式を貼り付け
作業セルも禁止です
(ジョー3さん出題)
*
*
*
*
*
*
解答用参考ファイル:Q51_2010.lzhをダウンロード
***********************************************************************
尚、解答発表は2/27(土)の午後8時です。
それまでは直接数式を書き込むこと・ポイントとなる関数名を
書き込むことはご遠慮ください。
***********************************************************************
「関数で出来ますか~?」もいよいよ最後か?!
とうとう感動?の第50回をむかえました!!
さて、出題者のsupermabさんのコメントはたった一言・・・
「関数で出来ますか?なのに~。関数使うの忘れた~。」
・・・でした。
・・・で式は・・・
=(D5+D6<=D3)*(D7+D8<=D4)
+(D5+D7<=D3)*(D6+D8<=D4)
+(D5+D8<=D3)*(D6+D7<=D4)
+(D5+D8<=D4)*(D6+D7<=D3)
+(D5<=D4)*(D6+D7+D8<=D3)
>0
・・・の122文字でした。
supermabさん、出題並びに解答例の作成、ありがとうございました。
***********************************************************************************
kirさんの解答例です。
ご覧下さい。
A3からA8に10から100までの整数がランダムに表示されます。
一番大きい値がF3に、2番目に大きい値がF4に表示されます。
3番目から6番目の値を上手にH3,H4、J3,J4に当てはめて
式1、式2を同時に成立させることができるとき
D10にTRUE、そうでない時にはFALSEと表示させて下さい。
(supermabさん出題)
*
*
*
*
*
*
解答用参考ファイル:2010_Q50.xlsをダウンロード
***********************************************************************
尚、解答発表は2/13(土)2/20(土)の午後8時です。
それまでは直接数式を書き込むこと・ポイントとなる関数名を
書き込むことはご遠慮ください。
***********************************************************************
今回のはなんかないと終わっちゃうということで
でっち上げたもので、御容赦ください。
で、自分でもあまり興味がわかず、
問題の検証で作成した54からほとんど進歩なしでした。
54
=ROUNDUP((MOD(DATE(B5,C5,),7)+DAY(DATE(B5,C5+1,)))/7,)
皆さんの40台を見て焦ったのですが、結局上記から逃れられず、
47で終戦でした^^;
=INT((WEEKDAY(B5&-C5)+DAY(DATE(B5,C5+1,))+5)/7)
どうやったら40台前半になるのか楽しみです。
(y sakudaさん談)
「関数で出来ますか~?」もいよいよファイナルか?!
出題はsakudaさんです。
【問題】
カレンダーの日付の部分の行数は通常5行ですが、2月では4行の
場合もあり、6行になる月もあります。
指定された月のカレンダーの日付部分の行数を計算してください
カレンダーは日曜日が左端にくる普通のものとします。
例によって、純粋な式だけでやってください。
*
*
*
*
*
*
*
解答用参考ファイル:Q49_2010.lzhをダウンロード
***********************************************************************
尚、解答発表は1/30(土)の午後8時です。
それまでは直接数式を書き込むこと・ポイントとなる関数名を
書き込むことはご遠慮ください。
***********************************************************************
みなさんのお蔭で「関数できますか~?」も48回目を迎えました。
50回まであともう少しです・・・
さて解答です・・・
まず、F2です。F2にはセルB2,C2に表示される2枚のカードの合計値を
表示します。くまぷーのハウスルールでキング、クイーン、ジャック、エースも
全て10点なので最大値は20にしかなりません。よってエースを1点扱いに
する場合を考えなくて済みます。よってセルB2,C2の第1文字が数値なら
そのまま、絵札ならば10点扱いで合計します。
{=SUM(IF(ISNUMBER(--LEFT(B2:C2)),--LEFT(B2:C2),10))} (52文字)
次にG2に3枚目のカードの値を表示します。3枚目がエースだった場合は
10点扱いにするか1点扱いにするかを判定しなければなりません。
F2が12点以上なら、エースを10点扱いにすると3枚の合計が22を越えてしまうので
1点扱いにしなければなりません。
また、3枚目がエースでない時、絵札ならば10点扱い、そうでなければ
そもままの数値として扱います。よって・・・
{=IF(LEFT(D2)="A",IF(F2<12,10,1),IF(ISNUMBER(--LEFT(D2)),LEFT(D2),10))} (71文字)
最後にH2に得点を表示させます。3枚のカードの合計値が22以上なら
0点になるので・・・
=IF(D3,IF(F2+G2>21,0,F2+G2),F2) (31文字)
3つのセルの総合計文字数が156になってしまいました(^^ゞ
ブラック・ジャックは2枚または3枚のカードを使います。
合計が21以下で一番大きくなるようにします。22になると0点です。
くまぷーのハウスルール
1.ジャック、クイーン、キングは全て10点
2.エースは2枚目までは10点扱い。3枚目の時は1点か10点の
都合の良い方になります。
遊び方
1.「OPEN」「ONE MORE」のチエックを外すと下のような初期状態になります。
*
*
*
2.「OPEN」のチエックをすると2枚のカードが開きます。
*
*
*
3.「ONE MORE」のチエックをすると3枚目のカードが開きます。
*
*
*
問題
得点を計算してF2,G2,H2にそれぞれ2枚の合計値、3枚目の値、
総得点を表示させて下さい。
解答用参考ファイル:Q48_2010.lzhをダウンロード
***********************************************************************
尚、解答発表は1/16(土)の午後8時です。
それまでは直接数式を書き込むこと・ポイントとなる関数名を
書き込むことはご遠慮ください。
***********************************************************************
問題を作り、できるかどうか検証した時作った76です。
=INDEX(B1:B46,LOOKUP(G3-1,COUNTIF(INDIRECT("C3:C"&ROW(3:46)),E3),ROW(4:47)))
何種類かつくりましたが、一番短くなったのは↓の48でした。
{=OFFSET(B3,1/LARGE((C4:C46=E3)/ROW(1:43),G3),)}
常連の皆さんが、立て続けに47と仰っておられるので、
もっと普通の手段がありそうなのですが、思いつきませんでした。
(y sakudaさん談)
ときどき、Q/A掲示板で「テーブルから複数の該当項目を
Vlookupで抜き出せないでしょうか?」と言うのが出てきます。
もちろんそんなものはオートフィルタかフィルタオプションでやればよい訳で、
私はそういう回答しか付けたことがありません。
これはくまぷーさんが12月4日に投稿された、「関数で出来ますか~?・・・雑談」を
見ていて思いつきました。テーブルの並びから言って
もちろんVlookupにはならないのですが、要うはn番目のヒット行を
式で検出するという問題です。
一応、100字以内で可能であることは確認してありますが、
例によってそれ以上の検討はしておりません。
一体どんな手段がでてくるんですかねーー
(y sakudaさん談)
【問題】
E3に入力された出題者のG3番目の出題問題名を
E5に表示してください。
恒例により、作業列、名前等は一切禁止です。
なお、エラー処理をすると長くなるだけのようですから、
G3に0とか出題数以上の数(例えば2題出題の方に5)が
入力された場合は#N/A等のエラー表示の放置で良いことにします。
*
*
*
*
*
*
*
解答用参考ファイル:Q47_2010.lzhをダウンロード
***********************************************************************
尚、解答発表は1/10(日)の午後8時です。
それまでは直接数式を書き込むこと・ポイントとなる関数名を
書き込むことはご遠慮ください。
***********************************************************************
まとも?な解答を・・・
A1:I9の範囲を参照 107:
{=SUM(INDIRECT(CHAR(MIN(CODE(T2:W2)))&MIN(--RIGHT(T2:W2))&":"&CHAR(MAX(CODE(T2:W2)))&MAX(--RIGHT(T2:W2))))}
非参照82:
=(AVEDEV(LARGE(CODE(T2:W2),{1,4}))*2+1)*(AVEDEV(LARGE(-RIGHT(T2:W2),{1,4}))*2+1)}
69と45はとりあえずみなさんにお任せします。
面白い解答を期待しつつ、携帯から参加します。
(minmaxさん談)
新年あけましておめでとうございます。
今年もよろしくお願いします。m(__)m
supermabさんじゃないけれど日付は
苦手です。こんなところでお許しを・・・
54:{=SUM(IF(WEEKDAY(DATE(A1,A2,ROW(1:7)))=5,ROW(1:7),0))}
ジョー3さんが行方不明なのでこれも代打です。
※上記A2をB1にしてください。
************************************************************************
吉田VS石井が終わってふと見たら
ジョー3さんから出題者解答例が送られてきました。
************************************************************************
最初は、こんな感じだったかなーー
ちょっと短くしてね、、
=DAY(INT(DATE(A1,B1,2)/7)*7+5)
でも、、今考えたら、どうしてこうなったか??わからん
次は、最初からmod使おうと思っていたけど、24
=MOD(-DATE(A1,B1,3),7)+1
みなさん、あけましておめでとうございます。m(__)m
ジョー3さんが行方不明ですので・・・
この問題は二つの条件を満たす数の和を取る問題です。
掲示板にもよく現れるアレです。
定番の解答であればSumproductを使った
43:=SUMPRODUCT((C3:C6<=H2)*(D3:D6>H2)*(E3:E6))
定番の配列数式であれば・・・
41:{=SUM(IF((C3:C6<=H2)*(D3:D6>H2),E3:E6,))}
2007であればSumifsで・・・
35:=SUMIFS(E:E,C:C,"<"&H2,D:D,">="&H2)
配列禁止、sumproduct禁止であれば面白くはないけれど・・・
80:=(H2>=C3)*(H2<D3)*E3+(H2>=C4)*(H2<D4)*E4+(H2>=C5)*(H2<D5)*E5+(H2>=C5)*(H2<D5)*E5
************************************************************************
吉田VS石井が終わってふと見たら
ジョー3さんから出題者解答例が送られてきました。
************************************************************************
【問題】
ポイント1から4にそれぞれセル番地を入力します。
入力されたセル番地を囲む最小の長方形の面積は?
・(今回は)ポイント1から4に入力するセル番地はA1からI9までとします。
・1つのセルの面積は1とします。
例示の場合は、C3からH7を囲む四角形の面積30が答えとなります。
*
*
*
*
(minmaxさん出題)
解答用参考ファイル:Q46_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は1/3(日)の午後8時です。
それまでは直接数式を書き込むこと・ポイントとなる関数名を
書き込むことはご遠慮ください。
***********************************************************************
この問題はジョー3さんのコメントから頂いたものです。
【問題】
セルA1に年を表す数値、セルB1に月を表す数値を入力する。
その日付の第一木曜日を表す数値をC1に表示させたい。
さて、さて、 2011年の場合、第一木曜は? 1月から12月まで、
6,3,3,7,5,2,7,4,1,6,3,1ですかね、?? で、
書式設定も、条件付き書式も、名前定義も、なしで・・・・
関数のみで、最短何文字?・・・・
***********************************************************************
尚、解答発表は12/31(木)の深夜12時です。
それまでは直接数式を書き込むこと・ポイントとなる関数名を
書き込むことはご遠慮ください。
***********************************************************************
復活第一弾は「夕食の数」。ジョー3さん出題です。
この問題は質問掲示板でよく見られる定番の問題です。
エクセルコンテストで言えば「腕自慢」と言うよりも「腕試し」に
あたる問題です。(o^^o)
【問題】
上はある旅館の宿泊予約名簿である。
指定日に何人分の夕食を用意すればよいかを調べたい。
尚、チェックインは午後3時まで、チェックアウトは午前10時まで、
夕食は午後7時とする。
【条件】
名前、書式、ワークエリアは禁止で、純粋に式一つで計算願います。
*
*
*
*
*
解答用参考ファイル:Q44_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は12/31(木)の深夜12時です。
それまでは直接数式を書き込むこと・ポイントとなる関数名を
書き込むことはご遠慮ください。
***********************************************************************
私は、結局のところ出題前に用意したものから全く進歩しませんでした。
私の最短は51です。
=SUM(N(MMULT(B7:K7,N(COLUMN(B:K)>ROW(1:10)))<B5))+1
Mougで付いていた解答は良く覚えていませんが、SubtotalとSubproduct
を使ったものだったと記憶してます。
私なりにSubtotalを使ったバージョンは配列数式の54でした
{=COUNT(0/(SUBTOTAL(9,OFFSET(B7,,,,ROW(1:10)))<B5))+1}
他にはあまり短くならなかった、Frequencyを使用した56
=FREQUENCY(MMULT(B7:K7,N(COLUMN(B:K)>ROW(1:10))),B5-1)+1
(y sakudaさん)
Mougか何かで、VBAとして出た質問です。
回答の方もVBAで回答していた方も多いのですが、
最後には関数でもできますと言うことで、
お定まりのSubproductを使った回答もついていました。
簡単そうに見えるのですが、やってみると結構厄介でした^^;
【問題】
B7から順次加算して行って、目標値以上にするために必要な
データ個数がいくつであるか計算してください。
上の例で言うと
目標値:1190⇒個数:2
目標値:1200⇒個数:2
目標値:1210⇒個数:3
なお、10個足しても目標値を下回る場合は11と表示してください。
【条件】
名前、書式、ワークエリアは禁止で、純粋に式一つで計算願います。
(y sakudaさん出題)
*
*
*
*
*
解答用参考ファイル:Q43_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は11/14(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
私が用意出来たのは、問題作った時にやって見たものを
ちょっと整理した56一つだけです。
{=CHAR(SMALL(CODE(MID($B4,ROW(A:A),1)&" "),COLUMN()-1))}
スレッドで何人かの方が仰っていた、見かけだけとか本物というのが
結局理解できませんでした^^;
さて、いったいどんなのがでてくるんですかね?
(y sakudaさん談)
ACUOの裏問です。本当は文字をコード順に並べ替えた文字列と
言いたいところなんですが、配列数式で&で繋げるのは
無理見たいですから、バラしてソートするだけになりました。
なんか、あまりバリエーションがなさそうなので疑問符付きの問題です^^;
(ACUOの提灯のつもりだったのでその辺は無視でした)
(y sakudaさん談)
【問題】
B1に入力された12文字以内の文字列(半角ブランク、半角の英大文字)
を1文字づつにバラしてB8:M8に一文字づつ、コード順に表示してください。
(B8の式をC8~M8にコピー)
【条件】
いつも通り、ワークエリア、名前等は禁止です
*
*
*
*
*
*
解答用参考ファイル:Q42_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は11/07(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
「関数で出来ますか?」出題者解答
足し算:
少ない文字数でなら、、、=-(-B3-D3)
これでは関数を使って無いので、、、=ABS(-B3-D3)
しかし、納得出来ない。
これは、関数で値を得ていると言えるのか。。。
こんな使い方、、、どれ程認知されているか。
=TRIMMEAN((B3,D3),)*2
でも文字数で、、、却下。
引き算:
Q&Aでは余りと言うか、殆ど使われない関数。
それでも知名度はそれなりにあると思う関数。
=SLOPE(IF({1,0},B3,D3),{2;1})
こんな式、、、結構好きです。
掛け算:
ある意味、1番厄介に感じました。
数値を扱う関数は、結構内部で掛け算を扱っているのが多い。
果してそれを使ってもいいものか・・・で悩みました。
結局、文字数が余りにも違い過ぎるので、、、妥協。
割り算:
以前の問題でSUMの代わりに使用。
故に、足し算では禁止関数に。
でも、掛け算・割り算部門では禁止関数にしていない。
この辺り、、、少々ズルイ。
(+):=MEDIAN(B3,D3)*2
(-):=SLN(B3,D3,1)
(×):=PV(,B3,-D3)
(÷):=NPV(D3-1,B3)
(からくちさん)
カテゴリー名「関数で出来ますか~?」に敬意を払い
そのまんまの問題「関数で出来ますか」
足し算・引き算・掛け算・割り算
ただこれだけ
関数の出番は全くありません
でもそれでは問題にならないので、、、
そこで逆に必要の無い関数を態々使い
同じ計算をしていただこう、、、と
これぞ「関数で出来ますか~?」に相応しい問題かと
ただかもすると「本当に関数で出来ますか」の意もチョッピリ、、、あるや無しや
でも十人十色の答えになる可能性も、、、また大
今から答え合わせを見るのが楽しみです
【問題】関数で出来ますか?
B3とD3の数値を足し算・引き算・掛け算・割り算してください
ただし、足し算では(+)の使用禁止
引き算(-)掛け算( * )割り算( / )も同様
そして代わりに関数を使用していただきます
ただし足し算でSUMを使われては問題になりません
従いまして使用禁止関数を設定させていただきます
<足し算・引き算 部門の禁止関数>
SUM・NPV・AVERAGE・SQRT
及びこれを含む関数すべて
(例)SUMPRODUCT等
<掛け算・割り算 部門の禁止関数>
PRODUCT・MMULT
及びこれを含む関数すべて
若しかして、、、チョッと厄介、、、かも・・・
わたしの勝手な判断
易しい< 足し算<割り算<引き算<掛け算<難しい
(からくちさん出題)
解答用参考ファイル:Q41_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は10/31(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
スーパーボールXLIV その2 出題者解答
今回は問題自体がつまらなかったのか、意外と難しかったのか
もりあがりませんでしたね。
出題者として反省しておりますm(__)m
今回はどれも発想は同じで、使う関数で多少バリエーションはありますが、最短は115どまりでした。
{=SUM((MID(B4,ROW(1:8),1)={"I","V","X","L","C"})*{1,5,10,50,100},(ISERR(FIND({"IV","IX";"XL","XC"},B4))-1)*{2;20})}
ROMANを使ったものも参考に提示しておきます。29です。
{=MATCH(B4,ROMAN(ROW(A:A)),)}
(y sakudaさん談)
これは、スーパーボールXLIVの裏問です。やって見たら、
こっちの方が工夫の余地があるみたいで、私には面白かったです。
ただ、ROMAN使えば簡単かつ短くできるのですが、ROMAN禁止ですので、
長くならざるを得ません。私は110は切れていません。
【問題】
B4にIVXLCの5種の文字を使って1~100のローマ数字が入力されます。
これをD4にアラビア数字で表示してください。
【条件】
1.ワークエリア、名前等は禁止、純粋な式一つでやってください。
2.一応ROMANの使用は禁止します。
(ROMANを使えば秒殺で出来ちゃうと思います)
【確認】
1.結果確認のボタンを押すと、1~100のチェックを自動的に行います。
2.D4に入っている式を文字列化してE4に表示し、E5に文字数が表示されます。
(y sakudaさん出題)
解答用参考ファイル:Q40_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は10/24(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
「数字を作る その3」出題者解答
この問題、作業列を使えばエクセルと出合って間もない方でも出来るのでは。
その1つが提示の表です。作業列がそのまま表に。
B3は10桁と決まっていますが、最後まで迷ったのが
桁数を決めないで2~20桁の範囲で、、、
とするつもりでした。
いま想うに、、、その方が良かったかな~
う~ん、でも如何だろう。
でもこれだけはハッキリ言える。
やっぱ出題って、、、難しい。
:{=RIGHT(SUM(MID(A1,ROW(1:10),1)*{1;9;6;4;6;6;4;6;9;1}))}
今回はみなさん仲良く同じ様な式と言うことで
・・・すみません・・・
(からくちさん談)
第1案
作業列あり:エクセルと出会ってまだ1ヶ月頃のわたしでも解けたでしょう。
作業列なし:う~ん、どう考えたらいいのかな。初見時にこの感覚はまず無いな。
出題者がこれでは・・・で、、、
第2案
作業列禁止:これならそれなりに易しさと難しさが同居している、、、かも。
急遽作ったにしては、、、自己満足。(自画自賛)
【問題】
B3に10桁の数字を入れます。
それを、、、隣り合わせになった数(10桁目と9桁目の様に)を加算。
その下1桁を得る。
これを順に繰り返していくと、最後に1桁の数字が残る。
この最後の1桁の数字を求めて下さい。
ただしいつもの様に、作業列等は無しでお願い致します。
結果は、数値・数字、どちらもOKと致します。 (からくちさん談)
*
*
*
*
*
解答用参考ファイル:Q39_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は10/17(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
出題者解答
問題考えた時に思ったのはFrequencyの例題だということで、その時考えたものを整理したのが、
103の↓です。
=AND(FREQUENCY(CODE(MID(B4,ROW(1:12),1)&0),ROW(1:99))=FREQUENCY(CODE(MID(B6,ROW(1:12),1)&0),ROW(1:99)))
出題後、Large,Smallでも同じということで配列数式にはなりますが、97
{=AND(LARGE(CODE(RIGHT(0&B4,ROW(1:12))),ROW(1:12))=LARGE(CODE(RIGHT(0&B6,ROW(1:12))),ROW(1:12)))}
で、これからが、問題で、単純にCodeの和ではダメなことはあきらかなので、自乗和で比較・・・・・
でも、これは、本当に大丈夫、つまり、文字を入れ替えても同じ値になるケースがないということが証明できない・・・
疑惑の68
{=VAR(CODE(MID(B4,ROW(1:12),1)&0))=VAR(CODE(MID(B6,ROW(1:12),1)&0))}
もちろんRow(A:A)にすれば二文字減ります。
そういうことで、ただしいと確信もてるのは73の↓です。
{=SUM(LN(CODE(MID(B4,ROW(1:12),1)&0))-LN(CODE(MID(B6,ROW(1:12),1)&0)))=0}
正しいと考える理由は次の通りです。
1.eを底にした対数は無理数ですから、整数の対数はすべて無理数になる
2.従って、文字を入れ替えて同じ数になることはあり得ない
3.同じ理由で、複数の文字を違う文字数の複数の文字と入れ替えることも不可能
ただし、Excelの実数は打ち切られているので有限小数つまり有理数ですから、厳密に言えば
上記は成り立ちません。でも、32、65~90の範囲ではそんな奇跡みたいなことは起こり得ないと
割り切りました^^;
からくちさんはRow(1:12)は使ってないとのこと。一体全体からくちさんの68ってのはどんなんだろ?
楽しみです。
( y sakudaさん談)
ACUOコメント
問題の中にも書きましたが、ACUOブログコンテストの提灯持ち問題として
考えたものです。
10月1日で判定するっての、後になるまでしらなかったw
で、お題優先ですから、問題は単純で、B6にランダムに入っている文字を並べ変えて(アナグラム)
B4に入っている文字列がつくれるかどうか判定するというだけです。
両方のセルに入る文字は12文字以内で半角大文字&半角ブランクのみとします。
(y sakudaさん談)
【問題】
B4に12文字以下の半角大文字、半角ブランクで構成された文字列があります
B6にやはり、半角大文字と半角ブランクで任意の文字列が入っています
この、B6の文字を並べ変えて、正解文字列にできる場合は判定欄E4に
True、正解文字列にできない場合はFalseを入れてください
上の例では
使用文字列:ACEOOTTLUb ならTrue(最後のbは半角ブランクの意味です)
使用文字列:ACEEOTTLUb ならFalse(最後のbは半角ブランクの意味です)
とします。
【条件】
名前、ワークエリア等を使用せず、純粋な式一つでやってください。
解答用参考ファイル:Q38_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は10/10(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
LOTTE お口の恋人 ACUO
名前を上手く使えば結構短くなるのではと思ってたのですが、
170文字位のしかできませんでした。結局一番短いのが、
からくちさんの言葉を借りれば、明白な有罪と
思われるこれだけでした^^;
141=TRIM(MID(" X XX XXX XL L LX LXX LXXXXC C",INT(B4/10)*4+1,4))&TRIM(MID(" I II III IV V VI VII VIIIIX",MOD(B4,10)*4+1,4))
単純明快かつ面白くもなんともない・・・・・・
皆さんの回答楽しみにしてます^^;
(y sakudaさん談)
1~100までのアラビア数字をLXIVCの5文字を使って変換するだけです。
当然のことながら、ROMANは使用禁止にします。
ただ、式一つでやるのは面倒くさいだけみたいなので、
名前、ワークエリアを活用して スマートな解答を作ってください。
裏問として、ローマ数字を数値変換するというのが考えられますが、
こちらは出し方によっては簡単かつ同一回答になりそうなので、
後日考えます。
解答用参考ファイル:Q37_2009.lzhをダウンロード
(y sakudaさん出題)
***********************************************************************
尚、解答発表は10/3(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
これより下はくまのワルアガキです。m(__)m
お口の恋人LOTTE ACUOのブログコンテストに参加しました。
http://acuoblog.jp/blog_user.php?id=418
現時点で参加ブログ数493です。(予約投稿時)
中にはブログの名前をLOTTE ACUO ・・・なんて名前に
しているものもいて・・・wwwww
いやあ,やる気満々と取るか、なりふり構わずととるか・・・(^^ゞ
出た目で称号を獲得 出題者解答
以前のことですが、、、Q&A掲示板で
「0以上で最小値を求める式は?」と言う質問に
定番と言うか、決まりきった回答が付いていました。
{=MIN(IF(A1:A10>0,A1:A10))}
その時、一般式で出来るのにと
=LARGE(A:A,COUNTIF(A:A,">0"))
と回答を入れました。
この質問に一般式での回答は、過去無かったと思います。
そしたら直ぐ後に
=SMALL(A:A,COUNTIF(A:A,"<=0")+1)
「これでも出来ます」と、こんな回答が付きました。
何と言うか、、、情けないやら、哀しいやら。。。
それ以降この様な回答は思うだけで
無意識に避ける様になってしまったようで。
そんな考え方(式)は忘れようとしても溜まる一方。
その中の1つを使った問題でした。
:=INDEX(F:F,IF(C4=MAX(C:C),4,
MATCH(VLOOKUP(LARGE(C:C,COUNTIF(C:C,">"&C4)),C:D,2,),F:F,)+1))
(からくちさん談)
最初に作った問題と比べ、可也難易度を和らげることが出来たと思います。
しかしわたしが出題した前回・前々回の問題と比べますと
まだまだその比では無いと思います。
と言うことでヒントにならないヒントを。
←・・・(それってヒント?)
あることに気が付くとその難度は愕然と低下。
もっともそれに気付き難いからこそ、、、高難度なのか。
この問題の意図は条件にあります。
従いまして条件の変更はこの問題の意味無し。
が、、、それはあくまでエクセル学(そんな単語聞いたこと無い)の追求。
故にそんな固いことは言いません。
如何しても出来ない、、、そんな時は、配列・作業列を使ってください。
少ない文字数で、、、の問題ではありません。
文字数はあくまで結果としてください。
(からくちさん談)
【問題】
出目(C列)の数値が大きい順にF列の位を称号(D列)に表示する。
≪条件 その1≫
仮に最大値が2名居た場合、その2名共に1番上の『皇帝』の称号を与える。
その次に大きい数値(3番目)には2番目の位である『国王』の称号を与える。
RANK関数の順位の付け方と違い順位を飛ばさない。(1位・1位・3位では無く1位・1位・2位とすること)
≪条件 その2≫
※ 答え(式)はD4に入れその式をD13まで、、、とする。
※ セル参照(C4)は構いませんが、範囲指定は列指定(C:C)のみとする。(C4:C13は禁止)
※ 配列数式の禁止。(INDEX・MMULT等でCtrl + Shift + Enterの代わりをするのも当然禁止)
ただし通常の使用法でのINDEX・MMULT等の関数使用は制限するものではありません。
※ 作業列・名前・書式等の使用も、今までの問題と同様に禁止。
*
*
*
*
*
*
*
解答用参考ファイル:Q36_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は9/25(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
ある意図があり、それに出来るだけ適う式がないか
それを探しながら回答(解答)しています。
もちろんですが、わたしの勝手な意図です。
仮にそれに可也適う式が出来たところで
それがみなさんに通じるものでも無い事は分かっています。
その事について何の説明もしないのですから、当り前と言えば当たり前ですが。
今回「曜日合わせ」の問題を何気に眺めていたら
「その2」の問題と、その意図に可也適った解答式が同時に浮かびました。
故に本来であるなら、む印さんの案にもかかわらず
この問題を出させていただきました。
む印さん、ありがとうございます。
当然ですがこの問題そのものを解くとするなら
もっといい式があるでしょう。
しかし上記を自分なりに捕らえると
この式は可也適っていると自負しています。
と言うことで、式の良さ・式の短さ等を無視していますが(何時もの事かも)
この式をわたしの解答式とさせていただきます。
:{=LEFT(VLOOKUP(TEXT(B3,"!*mm/daaa"),TEXT(B3+ROW(A:A),"yyy/mm/ddaaa"),1,),10)*1}
(からくちさん談)
む印さんが作られた問題「曜日合わせ」を眺めていたら
「曜日合わせ その2」が頭に浮かびました。
勝手に案に割り込み、申し訳ございません。
また、それをお許しくださいまして、ありがとうございます。
【問題】
B3(入力欄)に年月日を入れてください。
C3(曜日欄)にその曜日が表示されます。
例えば、2009/10/10 と入れますと(土)と表示されます。
そこで問題です。
次に10月10日が土曜日になるのは、、、
西暦○○○○年の10月10日でしょうか?
F3(解答欄)にそれを求めてください。
<例>
2010年2月28日(日)・・・・・・→2016年2月28日
2010年3月 1日(月)・・・・・・→2021年3月 1日
2008年2月29日(金)・・・・・・→2036年2月29日
書式・作業列等はいつものように禁止です。
(からくちさん出題)
解答用参考ファイル:Q35_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は9/17(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
殆どの皆さんは、既にお気づきの通り、対象となる日付の「前年曜日あわせ」は
=DATE(年,月,日)-364
の16文字で問題ないと思います。
関数をつかわないなら
=(年&-月&-日)-364
で14文字。
面倒系(年-1)で考えたのは
=DATE(年-1,月,日+MOD(SUM(WEEKDAY(DATE(年-{0,1},月,日),2)*{1,-1}),7))
と62文字。
※あくまで「前年」だからこれでいいのですが・・・ 。
--
(む印さん)
Excelをはじめた当時、必要に迫られ手探りで作ったアドイン関数は
ワークシート関数ではどうすればよいか?と、振り返ってみました。
-------------------
問題:
年(西暦)・月・日が入力されたとき、その日付に対する、
『曜日で合わせた前年の日付』を表示する式をセルJ3に入れてください。
尚、式の参照セルは名前定義した「年」(B3)・「月」(E3)・「日」(G3) の名前を使用し、
それ以外の参照は禁止です。 使用例)=DATE(年,月,日)
(もちろん、名前定義の「年」「月」「日」に式を割り当てるなど、改造するのも禁止です!)
『曜日で合わせた前年の日付』とは・・・
指定入力された「年月日」が「2009年1月1日 木曜日」の場合、それに対する前年の日付は
「2008/1/1の火曜日」となりますが、曜日を合わせたいので、それに一番近い木曜日である
「2008/1/3」となることをいいます。
また、「前年」としていますが例外として、入力された「年月日」が「2009年12月31日 木曜日」
の場合の結果は2008/12/31の水曜日に一番近い「2009/1/1 木曜日」となります。
その他の例)
入力:2009年2月27日 (金曜日)→ 解答結果:2008/2/29 (金曜日)
入力:2009年2月28日 (土曜日)→ 解答結果:2008/3/1 (土曜日)
-------------------
(む印さん談)
*
*
*
*
*
*
解答用参考ファイル:Q34_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は9/12(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
【問題】
D2の文章に含まれる「あ」「い」「う」「え」「お」の数を
調べて視覚化する。
前回のQ2では下図のようになった。
*
*
*
*
*
*
*
*
それを今度は横に「■」が揃ったら、その横列の「■」を消去して
その列の分、表の中の「■」を下方にずらしたい。
*
*
*
*
*
*
*
*
D6に入力した式をH15までコピペして完成させるには
D6にどのような式を入力すればよいか?
解答用参考ファイル:Q33_2009.lzhをダウンロード
(ジョー3さん出題)
***********************************************************************
尚、解答発表は9/5(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
エクセル界の奇人(?)、あのジョー3さんから
ノンマクロでテトリスを作るというお題が出された。
VBAを使って作るのならば誰も驚かないと思うが
ノンマクロ・・・
これは「動かす会」への挑戦か?!
初めはくまぷーもそんなの、無理・無理・無理・・・
と思ったが・・・
果たしてVBAを使わずにどこまで
テトリスに迫れるのか?!
果たしてジョー3さん以外に参加者はいるのか?!(^O^)
一応、
出題者案を送りますね、
Q1:44:=REPT("■",LEN($D1)-LEN(SUBSTITUTE($D1,D2,)))
Q2:28:=IF(LEN(D$3)+ROW()>9,"■","")
Q2は、他に29,27もありましたが、、
言われるまで気付かなかった。・・・・20はね、、、
(ジョー3さん談)
---------------------------------------------------------------------------------------------------
今、映画館にいて投稿できないので、この場を借りて・・・
Q1:44:=REPT("■",LEN($D6)-LEN(SUBSTITUTE($D6,D7,)))
これはジョー3さんとセル番地が違うだけですね (^^ゞ
Q2:20:=MID(D$8,20-ROW(),1)
Q1なしのQ2:56:=LEFT("■",19-ROW()<LEN($D$6)-LEN(SUBSTITUTE($D$6,D$7,)))
さて、47というのはどういうんだろう?
(くまぷー)
【問題】
D6の文章に含まれる「あ」「い」「う」「え」「お」の数を
調べて視覚化したい。
Q1:例のようにD8の式をH8までコピペして完成させるには
D8にどのような式を入力すればよいか?
Q2:例のようにD10の式をH19までコピペして完成させるには
D10にどのような式を入力すればよいか?
尚、「あ」「い」「う」「え」「お」の数の最大値は各10とする。
*
*
(例)
*
*
*
*
*
(ジョー3さん出題、一部くまぷー改)
解答用参考ファイル:Q32_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は8/29(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
出題者、自らが言うのも可笑しいですが、、、
この問題の面白いところ
停止してしまう数値が夫々に違うところ
ある数値で停止、、、しかし他の方は簡単に通過
でも数値が変わると立場も逆転、、、これが面白い、これが不思議
この問題の悔しいところ
出来ない>>>この数値、無理では>>>やっと出来た
その式を改めてみると、別にどうって事のない式
こんな式が何で直ぐに思い付かなかったのか、、、悔しい~
皆さんがどんな式を組まれたのか楽しみです
最後まで苦しめられた数値は、、、185
出来上がった式にその様子がありあり・・・
苦しんでやっと作った式
他に解は無いと思いきや皆さん違う式だったりして
でも、たまたま違う式になったのでは<お遊び式、好き人>としては何とも・・・
1つだけでもいいから意図して皆さんと被らない式を作ろう
と言うことで作ったのが、、、74
どうか何方も同じ式を提示していませんように・・・
あっ、そうそう言い忘れるところでした
判定は、あくまで己に甘く、、、です
幾つか疑問符付きです
(からくちさん談)
からくちさんのファイル:Q31_2009_karakuchi_san.lzhをダウンロード
**********************************************************************************
himiさんのファイル:Q31_2009_himi_san.lzhをダウンロード
くまぷーのファイル:Q31_2009_kumapooh.lzhをダウンロード
y sakuda さんのファイル:Q31_2009_sakuda_san.lzhをダウンロード
kirさんのファイル:Q31_kir_san_2009.lzhをダウンロード
む印さんのファイル:Q31_2009_MUJIRUSHI_SAN.LZHをダウンロード
ガキの頃、、、いや少年期に遊んでいた計算式の作成
※ 4 のみを必ず4回使う。(3回以下、5回以上は×)
※ 加減乗除のみで1・2・3・4・5・・・・・・・・・と、限りなく作っていく
と言うものでした。(目標100まで、、、だったと思う)
これではエクセルではありませんのでアレンジを。
でもそのことにより難易度が大幅に下がったような・・・。
反面、より先の先まで作れるようになり、返って大変かも。
≪ 問題 ≫
※ A1・B1・C1・D1 を必ず1回のみ使うこと (未使用・2回以上使用は禁止)
※ A1・B1・C1・D1 以外の数値(数字)の使用は禁止
※ 1~ 順に作っていくこと (途中を飛ばして次に行くことは禁止)
(色々な数字・数値を作ることが目的では無い 連続させることを目的としているため)
※ エクセルの問題なので関数の使用を各数値とも1種1個のみOKとします
ただし先の問題「数値を使わず数値を・・・」とは違い
関数のみで数値(数字)を作ることは禁止します
=関数( ,"*")・・・・・・・・・・・禁止・・関数のみで数字が作られている
=関数(A1,"*")・・・・・・・・・OK
=関数(A1,2)・・・・・・・・・・・・禁止・・数値が使われている
=関数Ⅰ(A1,関数Ⅱ(B1))・・・・・禁止・・関数の2個使用
=関数Ⅰ(A1)+関数Ⅰ(B1)・・・・・禁止・・関数の2個使用
=関数(A1,B1)・・・・・・・・・・OK
=関数(A1,B1:D1,)・・・・・禁止・・範囲には入っていますが"C1"が使われていない
=関数(A1,B1:D1,)+C1・・禁止・・C1の2度使用
数式の長さ等はまったく関係ありません 幾つまで続けて作れるか、、、だけ
≪解答例≫
1:=SUM(A1,B1)/(C1+D1)
2:=A1/B1+C1/D1
-
-
-
-
-
-
解答用参考ファイル:Q31_2009.lzhをダウンロード
(からくちさん出題)
***********************************************************************
尚、解答発表は8/22(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
出題者でありながら、お恥ずかしいですが完全版ではありません。
今週はお盆関係で忙しかったのと、曜日を一日勘違いしていまして
気がついたら時間が有りませんでした。(^^ゞ
(ますたあさん談)
A 209文字
=INDEX(A4:A39,MATCH(HOUR(I8),A4:A39,))&":"&INDEX(B4:F39,MATCH(HOUR(I8),A4:A39,),IF(ISNA(MATCH(MINUTE(I8),INDEX(B4:F39,MATCH(HOUR(I8),A4:A39,),))),1,MATCH(MINUTE(I8),INDEX(B4:F39,MATCH(HOUR(I8),A4:A39,0),))+1))
B 190文字
=VLOOKUP(INDEX(B4:F39,MATCH(HOUR(I8),A4:A39,)-1,IF(ISNA(MATCH(MINUTE(I8),INDEX(B4:F39,MATCH(HOUR(I8),A4:A39,),))),1,MATCH(MINUTE(I8),INDEX(B4:F39,MATCH(HOUR(I8),A4:A39,0),))+1)),A42:B49,2,0)
*************************************************************************************
くまぷーのファイル:Q30_2009_KUMAPOOH.lzhをダウンロード
いつも楽しく遊ばさせてもらっています。(^^)
問題の修正が終わりましたので送ります。
特に問題文をつけませんでしたが常連さんなら分かりますよね。
新幹線に乗るおおよその時間を I8セルに入力します。
そのI8セルの時間に、最も近い発車時間の列車時刻を
時刻表から抽出できるように J11セルに式を作ってください。
また、その列車の列車名も J12セルに表示できるように式を作ってください。
※行き先は、高崎限定とします。
高崎は全ての列車が止まります。
ではではよろしくお願いします。
(ますたあ さん談)
(追記)
なお、指定できる時間は終電前としてください。
*
*
*
*
*
*
*
参考ファイル:Q30_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は8/15(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
この一週間いろいろ作りましたが、最終日に最初から用意してあった47が二文字ダイエットできただけでした。
45
=MID("BA--",FIND(C5&E5,"00IACICAIIAACC")/3,1)
実はこれ、あまり気に入ってません。
寧ろからくちさんのC5&E5、関係演算子、Code禁止に触発されて作ったこちらの方が気に入ってます。
47
=MID("AB-AB",FIND(C5,"IAC")-FIND(E5,"IAC")+3,1)
Findが重なっていたり、ABが繰り返しているのを何とかしようとすると却って伸びちゃいました^^;
49
=MID("AB-AB",MMULT(FIND(C5:E5,"IAC"),{1;3;-1}),1)
52
=MID("-AB",MOD(FIND(C5,"IAC")-FIND(E5,"IAC"),3)+1,1)
他にもFrequency使ったものやらいくつかありますが、エンジンの考え方はこの二種類のみです。
(sakudaさん談)
問題が切れそうなので、急きょでっちあげたものです^^;
例によって、一応可能であること(簡単にできるはずです)を確認しただけで、
どんな手があるのか知りませんw
当然、名前、作業セル、書式類の使用は禁止。
ネタ元のSheet2への参照も禁止です。
【問題】
F9で表示が変わります。
C:ぐー
A:ちょき
I:ぱー
として、結果欄I5に勝者をA、Bで表示してください。
なお、あいこの場合は - を表示します。
書式類、名前、作業セル等はすべて禁止、
Sheet2への参照も禁止です。
(sakudaさん出題)
*
*
*
*
*
*
*
*
解答用サンプルブック:Q29_2009.lzhをダウンロード
***********************************************************************
尚、解答発表は8/8(土)の8:00です。それまでは直接数式を
書き込むこと・ポイントとなる関数名を書き込むことはご遠慮ください。
***********************************************************************
最近のコメント