« 表計算一筆書き(第48問)・・・座蒲団1枚!( ^o^)ノ◆ | メイン | 表計算一筆書き-いよいよ、最終章へ »

2008年10 月18日 (土曜日)

コメント

む印

Aはminmaxさんが確立されたCOUNTものを
探っていて見つけた循環(反復計算)42文字
=MID("● ● ●   ●●    ●●",COUNTA(A1:$F$6),1)

BはいつものRCで54文字の
=MID(" ● ●●●",MOD(25,SUMSQ(COLUMN()-6,ROW()-6,2))+1,1)

minmaxさんのA-循環無しで43がとても楽しみですd

minmax

二番煎じみたいなものですが。

普通のもの1個
=MID("◆ ◆ ◆   ◆◆    ◆◆",COUNTBLANK(L1:$Q$6),1)
46字

配列数式2個(a1に入力他セルにコピー)
{=MID("◆ ◆ ◆   ◆◆    ◆◆",COUNT(L1:$Q$6%),1)}
44字(y sakudaさん式でむ印と一緒かもしれませんが)

{=MID("◆ ◆ ◆   ◆◆    ◆◆",SUM(L1:$Q$6+1),1)}
43字

循環参照1個
=MID("◆ ◆ ◆   ◆◆    ◆◆",COUNTA(A1:$F$6),1)
42字(循環参照)

minmax

ごめんなさい。む印さんを呼び捨てにしてしまいました。

kir

Aは、
51:=MID("◆ ◆ ◆   ◆◆    ◆◆",ROWS(1:$6)*COLUMNS(A:$F),1)
Bは、
59:=MID("◆ ◆ ◆   ◆       ◆◆◆ ◆",SUMSQ(ROW()-6,COLUMN()-6)+1,1)
57:=MID("  ◆   ◆◆◆ ◆",ABS(SUMSQ(ROW()-6,COLUMN()-6)-10)+1,1)
55:=MIDB(" ◆ ◆ ◆◆◆◆",ROWS(1:$6)^1.46+COLUMNS(A:$F)^1.46,2)

>{=MID("◆ ◆ ◆   ◆◆    ◆◆",SUM(L1:$Q$6+1),1)}
なるほど~。起点と中心点を対角にした、正方形のイメージでセル数をカウントするんですね。
COUNTのほうは%で空白を0に変えてると。
Aパターンだからこそ出来るとはそういうことだったんですね。脱帽です!

む印さんのBも、SUMSQに3番目をセットするとは!
そうやって数値をずらす方法もあったんだとびっくりしました。

y sakuda

今日は中央線が人身事故でとまり、ちょいと前に帰ってきました。
みなさんの今ざっと見ましたけどさっぱり理解できてない^^;
以外と奥が深い問題だったんですねーー
私は初日にやった59から一歩もすすみませんでした。
kirさんのと同じです。
A59
=MID("* * * *** *",SUMSQ(ROW()-6,COLUMN()-6)+1,1)
B59
=MID("* * * * *** *",SUMSQ(ROW()-6,COLUMN()-6)+1,1)
大体-2ってのさえ思い付いてないです^^;

かず

A51とB59は気付いたのですが…

%を配列数式でまとめるなんて、まさに、職人技ですね!

む印

>・・・SUM(L1:$Q$6+1)
おおっ!ここでこの配列を思いつくとは、、
minmaxさん、アンタは天才だd

む印

kirさんのB55もいいですねd
>^1.46
でMIDB関数にうまくハマるのかー

私はAでMIDB無理やり使って
=TEXT(MIDB("●●●●●1 ●●1",COLUMNS(A:$F)*ROWS(1:$6),2),"●")
こんな事までしてました(^^ゞ

くまぷー

今日は今までCATVで北斗の拳の
ラオウ外伝2本、ユリア外伝を見ていました。

>みなさんの今ざっと見ましたけどさっぱり理解できてない^^; ×2

本当に初期の頃に比べると理解を
越えた手法がたくさん出てきたと思います。

>>・・・SUM(L1:$Q$6+1)

本当にどこからこんなものが出てくるのか?

黒魔術師2代目ですね~
理解の域を超えています。
本当に◇\(o・Q・o)/◇降参!!

y sakuda

>・・・SUM(L1:$Q$6+1)

>COUNT(L1:$Q$6%),
も思いつくというより、目の前に見せられても理解できるまでにずいぶんかかった・・・
配列数式だから意味が出てくるとは言え、なんちゅうもんを考え出すんだろ^^;
%を持ち込んだのは私ですけど、こういう使い方はまるで想定外w
1.こんなのやる人まともな頭じゃない
2.教科書的に言うと悪いプログラムの典型w⇒よいプログラムとは誰にでもわかりやすくですからねーー

ジョー3

むむーーー、、
ちらっと見ただけでは、
皆さんの回答は、私からすると
別世界だ。

あとで、じっくり見てみたいが・・・

くまぷー

>皆さんの回答は、私からすると別世界だ。

そうなんですよ。この頃、特にそうです。
自分の限界を感じます。(>_<)

y sakuda

>皆さんの回答は、私からすると別世界だ。

ですねーー
再開したころは、基本テクニックは出尽くしてるのではと思ってましたが、最近使われているCount方式なんかが飛び出してくるし^^;
この方式は理屈では分かりますが、今のところ使いこなせる自信がないです。
続ければまだなにが出てくるかわかったもんじゃないですが、関係者一同問題が出尽くし気味ですねーー
ま、尤も、こういう状態になってくるとフツウの方が覗いてもなんの話かわからなくなってきますから、ここだけの村で孤立しそうですねーー

くまぷー

>フツウの方が覗いてもなんの話かわからなくなってきますから、

最近はアクセス数もガタ落ちで
一時の半分から三分の一といったところで今週はランキング外です(T.T)

今までのように解答発表で
ただ式をUPするだけではダメでしょうね。
私なんかも、かなり詳しい解説をして頂かないと・・・

minmax

なんだか、見ているだけの方のためにも式の解説をした方が良いみたいですので。
もっとも、その方が、次にみなさんが活用しやすくなるのは間違いないわけですしね。
私の式についてはkirさんが解説してくれていますが、エンジン部分についてあえて解説ってのをやってみますと、

■「COUNTA(A1:$F$6)」の場合、中心「F6」(固定)を基準に「A1」(変動)までの四角形の空白でないセルの数を計算します。
 式を置き換えるなら「ROWS(1:$6)*COLUMNS(A:$F)」と同じになるかと思います。
 ただし、COUNTAの場合入力されているセル自体も引数のセル範囲に含まれるため循環参照となります。
 
■循環参照とならないためには、11×11のセルの範囲外を利用する必要があります。
 そこで「COUNTA(・・・」を「COUNTBLANK(L1:$Q$6)」に置き換えてセルの個数を計算します。
 当然、文字数は長くなります。
 
■循環参照にせず、文字数を短縮するには、11×11のセルの範囲外を利用し、かつ、文字の数の短い関数を使う必要があります。
 そこで、「COUNTBLANK(L1:$Q$6)」の代わりに「COUNT(L1:$Q$6)」に置き換えます。
 このままですと、COUNTは数値以外のセルを無視しますので、「L1:$Q$6」の範囲のそれぞれのセルを数値化する必要があります。
 そこで配列数式の登場となります。「{=COUNT(L1:$Q$6*0)}」とした場合は、L1:$Q$6という範囲のそれぞれのセルに0をかけて結果として「0」という数値に置き換わります。
 「0」は数値ですから「COUNTBLANK」から「COUNT」に置き換えてもセルの個数を結果として返すこととなります。
 ※「{=COUNT(L1:$Q$6*0)}」のイメージ「=COUNT(L1*0,M1*0・・・,Q6*0)」→結果は36 
 ここで、「=COUNT(L1:$Q$6*0)」の「*0」を「%」に置き換えてみます。
 この場合の「%」は0%を掛け算するという意味になり、結果としては「*0」と同じ意味になるとともに1文字節約出来ることとなります。
 これで「{=COUNT(L1:$Q$6%)}」という式の完成です。
 
■さらに「COUNT」を「SUM」に置き換えてみます。SUMは数値を合計する関数ですので空白や0のセルをいくら足しても0になります。
 そこで、それぞれのセルに1を足してやることでそれぞれのセルの合計がセルの個数となります。
 式で表すと{=SUM(L1:$Q$6+1)}となります。
 ※「{=SUM(L1:$Q$6+1)}」のイメージ「=SUM(L1+1,M1+1・・・,Q6+1)」→結果は36 
 これによってCOUNTを使った場合より1文字節約出来ることとなります。
以上です。

まじめに解説すると長くなりますね。
悪児さんのように○○の道というような解説ブログが必要なくらいですね。

ここのみなさんが基本的に文字数を短くしようと考えて頑張っておられるのでしょうから、
y sakudaさんがおっしゃる
>教科書的に言うと悪いプログラムの典型w⇒よいプログラムとは誰にでもわかりやすくですからねーー
にならざるを得ないと思いますよ。
ただ、私の配列数式は、配列数式の仕組みさえ分かっていれば理解しやすいと思っていたのですが。
(配列数式は普段は使いませんし、私も苦手ですから配列数式の得意そうなkirさんやむ印さんなど以外の方にはわかりづらいことは確かですが)

それよりも、む印さんの「MOD(25,SUMSQ・・・・・」第1引数に固定値を持ってくるなんてなかなか思いつかないですね。さすがです。

なお、来週からは病院にも通わなければいけないので、たまにしか顔を出せないかもしれません。

長くなり失礼しました。

y sakuda

>教科書的に言うと悪いプログラムの典型w⇒よいプログラムとは誰にでもわかりやすくですからねーー

ははっ・・・・
これは私もやっている方の立場ですから同罪なんですけどね。
大昔Bitという雑誌にナノピコ教室というコラムがあり、やはり、プログラムの作成コンテストでした。
ここに出てくる解答がまたみんなマニアックな代物で、やってる連中は楽しくやってたんですが、世間様からはひんしゅくを買っていたみたいです。
なんせ、出題者が回り持ちなんですが、東大、慶応、教育大とかの若手の先生がほとんどで、回答者もそのあたりの身内が多いので、全国販売の雑誌にもかかわらず、数か月後に発表される入選者(粗品がもらえた)の半分くらいはお互いにどこの誰だか分かっているという状態でしたw

P.S.
解説ありがとうございました。
昨晩↑の解説内容とほぼ同じ理解に達するのに一時間ばかりかかりました。
特に 配列+1と配列%は、??でしたねーー

minmax

>特に 配列+1と配列%は、??でしたねーー
これについては、まず、循環参照はちょっと気がひけるよなっと思って、セル範囲に%かけてみようかなと思ったのですが、単純に%をかけてもダメだと分かったので、配列数式しかないなと考えなおしたものです。
さらに、SUMも配列を扱うよなと思って+1をやってみたのですが、やっぱり配列数式にしないと結果が求められなかったため、配列数式にしたものです。

それにしても、む印さんが44字で出来たとおっしゃっていましたが、式は%を使った式と同じだったのでしょうか。
結構気になっております。

む印

minmaxさん、解りやすい解説
ありがとうございます^^

>む印さんが44字で出来たとおっしゃっていましたが
あれも循環つかったやつで、そのとき書き忘れてただけです。
因みに、エンジン部分が
COUNT(A:$F 1:$6)
となるだけのものです。

む印

すいません、、正しくは
COUNTA(A:$F 1:$6)
です。

しかし
>SUM(L1:$Q$6+1)
は、一目見て、久しぶりの感動を得た式でしたdd

くまぷー

>minmaxさん、解りやすい解説
ありがとうございます^^ ×2

minmaxさんの解説を読んで
ああ、そういうことなのかと膝を叩いている次第です。

>ここのみなさんが基本的に文字数を短くしようと考えて頑張っておられるのでしょうから、
>y sakudaさんがおっしゃる
>>教科書的に言うと悪いプログラムの典型w⇒よいプログラムとは誰にでもわかりやすくですからねーー
>にならざるを得ないと思いますよ。

可読性が悪くなるのは必然ですね~
そういう意味でminmaxさんのように
解説をつけてくれるのはとても有り難いです。m(__)m


minmax

>久しぶりの感動を得た式でしたdd
たまたまです。
それより、私は、む印さん(&えくせるバカさん)ほかみなさんの数式に感動させられたこと数えきれずです。
また、y sakudaさんの熱心さにもいつも感服させて頂いております。
初めて参加させて頂いた頃からずいぶん成長させて頂きここに関しては、幾回りか成長させて頂きました。
くまぷーさん始め皆様に感謝申し上げます。
50回と言わず、ずっと継続されることを心より願っております。

minmax

y sakudaさんに関してもう一言。
本来y sakudaさんはプログラマですよね。
その方が関数にここまで熱心に取り組まれるということは、ほんとに感心します。
本来であれば、VB、Java等のプログラム(私には全く分かりませんが)でやってしまえば簡単な事が多いと思いますし。
何度もいいますが、ほんとに感心してますし、頭がさがります。

む印

>50回と言わず、ずっと継続されることを心より願っております。
そこには当然minmaxさんもいないとねd

ところで、%のことで一言
かなり以前の事なので
みなさん覚えておられないのも無理ありませんが
えくせるバカは一筆書き以前から
ちょくちょく使ってました。
『田園』でも使ってたんですが・・・

y sakuda

>本来y sakudaさんはプログラマですよね。
には違いありませんが、業務としてプログラムをいじっていたのはPCではなく、ラージですし、20年位前までです。

私もVB,C、Java、JScriptはわかりませんです。
まあ、JScriptは見れば見当がつく程度には分らないでもないですけど・・・・

別に関数に取り組んでいるわけではなく、こういうパズル的な頭の体操がきらいじゃないだけですよーー
ここに出てきたテクニックがExcelを通常使用するときの役に立つことはほとんどなさそうですから、私も含めて、ここに顔出してる方たちもどこかで実用上使ってやろうと思っていろんな手を考えてらっしゃるわけじゃないと思いますけどね。
ジョー3じゃないですが、楽しければなんでもいいですw

y sakuda

>ところで、%のことで一言かなり以前の事なので
本当だ、田園で使ってらしゃいますねーー
まるっきり覚えがなかった。
これを演算子として使うというのは普通じゃないので、印象に残っててもよさそうなものなんですが、不思議と言えば不思議ですねーー

minmax

>%のことで一言
ついでに私も一言
%に関しては、以前からいつか使おうと考えておりました。
ただし、この前にy sakudaさんが使っておられた「・・)%」のような使い方は、む印さんが使っておられたのかよく分かりませんが、この間初めて知りました。
目から鱗でした。

む印

%は案外利用価値がある演算子ですよねd^^
かなり以前にEWでも
からくちさんが日記で
「A1にある数値で一番右端に出てくるゼロいがいの数字を求めるには」
という問題を出されたので
=RIGHT(A1%%%%%)*1 とか =RIGHT(-(1%&A1))*1 なんて返して
遊ばせてもらいました^^

maxmin

さすがむ印さん

ジョー3

あらら、、

いつの間にイッパイ・・・・・

おもしろかった。=書き込み。

ジョー3

>関係者一同問題が出尽くし気味ですねーー

出題者が絶対勝つのを出してみたいけど・・・

たまにはねーーー

今度その方式でやってみようかなーー

わたしは、おおざっぱには勝負できることが

あったとしても、減量では、もう、、、
全然自信がありません。からねーー

くまぷー

>今度その方式でやってみようかなーー

おお、是非やって下さい!!
第50問のキリ番をゲットして下さい (^O^)

ジョー3

>第50問のキリ番をゲットして下さい (^O^)

あ、、うーーーそのーーー

すぐには出来ないかも、

y sakuda

>第50問のキリ番をゲットして下さい (^O^)
餌撒いてますけど、今週はなんとかなるんでしょうか?

くまぷー

>今週はなんとかなるんでしょうか?

49問目は大丈夫です(^O^)

コメントの確認

コメントのプレビュー

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

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

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

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

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

処理中...

コメントを投稿

アカウント情報

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

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