<出題者解答例>
出題する度に、、、いや他の方の問題でも同様です
皆さんの凄さには本当に驚かされます
わたしは今まで問題を見て難しいと思った事ありません
しかしより短い式でとした時は易しいと感じた事ありません
例えどんな問題でも、、、です
{=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(
C3,REPT("*",COUNT(FIND(REPT("*",ROW(1:99)),
C3))),REPT(0,COUNT(FIND(REPT("*",ROW(1:99)),
C3)))),"*",),"子","子*"),"子*","子",(LENB(C3)-LEN(C3))
/2),"*0",0),0,"*")}
偶々全く同数を2個書いてしまいどっちを出すか迷いましたが
皆さんの式に比べたらお話にならないので先に書いた式にしました
(からくちさん)
誰も来ないうちに・・・
513と言っていたけど、ヤケのやんパチ・・・533文字!!
{=SUBSTITUTE(LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C3,REPT("*",MAX(IF(LEN(SUBSTITUTE(C3,REPT("*",ROW(A1:A99)),))
投稿情報: くまぷー | 2019年7 月 6日 (土曜日) 午後 08時08分
190:
{=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(C3,REPT("*",COUNT(FIND(REPT("*",ROW(1:99)),C3))),REPT(1,COUNT(FIND(REPT("*",ROW(1:99)),C3)))),"*"," "))," 子","子")," ",1),1,"*")}
投稿情報: maron | 2019年7 月 6日 (土曜日) 午後 08時09分
{=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(C3,
REPT("*",COUNT(FIND(REPT("*",ROW(1:99)),C3))),REPT(1,COUNT(FIND(
REPT("*",ROW(1:99)),C3)))),"*"," "))," 子","子")," ",1),1,"*")}
投稿情報: maron | 2019年7 月 6日 (土曜日) 午後 08時11分
途中で消えてしまった・・・
不等号を全角にして・・・
{=SUBSTITUTE(LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C3,REPT("*",MAX(IF(LEN(SUBSTITUTE(C3,REPT("*",ROW(A1:A99)),))<LEN(C3),LEN(REPT("@",ROW(A1:A99))),))),REPT("@",MAX(IF(LEN(SUBSTITUTE(C3,REPT("*",ROW(A1:A99)),))<LEN(C3),LEN(REPT("*",ROW(A1:A99))),)))),"*",),"子","子*"),LEN(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C3,REPT("*",MAX(IF(LEN(SUBSTITUTE(C3,REPT("*",ROW(A1:A99)),))<LEN(C3),LEN(REPT("@",ROW(A1:A99))),))),REPT("@",MAX(IF(LEN(SUBSTITUTE(C3,REPT("*",ROW(A1:A99)),))<LEN(C3),LEN(REPT("*",ROW(A1:A99))),)))),"*",),"子","子*"))-1),"@","*")}
投稿情報: くまぷー | 2019年7 月 6日 (土曜日) 午後 08時12分
最初から、皆さんと方向性が少しだけ違ったみたいです。
携帯からなのではっきり見てませんが。
持ってきたものをゆっくり順次貼り付けます。
同じような式もありますが。
やってみた順
231
{=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(LOOKUP(MIN(IF(ISERROR(FIND(REPT("*",ROW(1:99)),C3)),ROW(1:99)))-1,IF({1,0},ROW(1:99),SUBSTITUTE(SUBSTITUTE(C3,"*"," "),REPT(" ",ROW(1:99)),REPT("*",ROW(1:99))))))," ","+"),"+子","子"),"+","*")}
投稿情報: min | 2019年7 月 6日 (土曜日) 午後 08時24分
211
{=SUBSTITUTE(SUBSTITUTE(TRIM(LOOKUP(MIN(IF(ISERROR(FIND(REPT("*",ROW(1:99)),C3)),ROW(1:99)))-1,IF({1,0},ROW(1:99),SUBSTITUTE(SUBSTITUTE(C3,"*"," "),REPT(" ",ROW(1:99)),REPT("*",ROW(1:99))))))," 子","子")," ","*")}
投稿情報: min | 2019年7 月 6日 (土曜日) 午後 08時34分
188
{=SUBSTITUTE(SUBSTITUTE(TRIM(LOOKUP(COUNT(FIND(REPT("*",ROW(1:99)),C3)),IF({1,0},ROW(1:99),SUBSTITUTE(SUBSTITUTE(C3,"*"," "),REPT(" ",ROW(1:99)),REPT("*",ROW(1:99))))))," 子","子")," ","*")}
投稿情報: min | 2019年7 月 6日 (土曜日) 午後 08時37分
190
{=SUBSTITUTE(SUBSTITUTE(TRIM(LOOKUP(MATCH(,-FIND(REPT("*",ROW(1:99)),C3)),IF({1,0},ROW(1:99),SUBSTITUTE(SUBSTITUTE(C3,"*"," "),REPT(" ",ROW(1:99)),REPT("*",ROW(1:99))))))," 子","子")," ","*")}
投稿情報: min | 2019年7 月 6日 (土曜日) 午後 08時55分
遅くなりました。今帰ってきました。
皆さんの拝見してませんが、179です。
{=INDEX(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C3,REPT("*",ROW(1:99)),REPT(0,ROW(1:99))),"子*","子 "),"*",))," ",0),0,"*"),COUNT(FIND(REPT("*",ROW(1:99)),C3)))}
投稿情報: y sakuda | 2019年7 月 6日 (土曜日) 午後 09時55分
くまぷーさんの途中で消えてませんか?
投稿情報: y sakuda | 2019年7 月 6日 (土曜日) 午後 09時58分
皆さんの、シートにコピーしながら眺めただけですが、minさんのはあちこち私と違うことやってるみたいですね。
投稿情報: y sakuda | 2019年7 月 6日 (土曜日) 午後 10時18分
ねてしまいました。
面倒なので残り全部
167
{=SUBSTITUTE(SUBSTITUTE(TRIM(INDEX(SUBSTITUTE(SUBSTITUTE(C3,"*"," "),REPT(" ",ROW(1:99)),REPT("*",ROW(1:99))),COUNT(FIND(REPT("*",ROW(1:99)),C3))))," 子","子")," ","*")}
173
{=SUBSTITUTE(SUBSTITUTE(TRIM(LOOKUP(,IF({1,0},-FIND(REPT("*",ROW(1:99)),C3),SUBSTITUTE(SUBSTITUTE(C3,"*"," "),REPT(" ",ROW(1:99)),REPT("*",ROW(1:99))))))," 子","子")," ","*")}
169
{=SUBSTITUTE(SUBSTITUTE(TRIM(INDEX(SUBSTITUTE(SUBSTITUTE(C3,"*"," "),REPT(" ",ROW(1:99)),REPT("*",ROW(1:99))),MATCH(,-FIND(REPT("*",ROW(1:99)),C3))))," 子","子")," ","*")}
169
{=SUBSTITUTE(SUBSTITUTE(TRIM(LOOKUP("1",IF(FIND(REPT("*",ROW(1:99)),C3),SUBSTITUTE(SUBSTITUTE(C3,"*"," "),REPT(" ",ROW(1:99)),REPT("*",ROW(1:99))))))," 子","子")," ","*")}
投稿情報: min | 2019年7 月 7日 (日曜日) 午前 04時35分
最後の169の式はifをtにかえればちょっと減りますね?
投稿情報: min | 2019年7 月 7日 (日曜日) 午前 04時39分
◆minさんの、INDEXの使い方がすごい!!
投稿情報: maron | 2019年7 月 7日 (日曜日) 午前 07時42分
うーーん、minさんの167やってることは私とほとんど同じ。
違いは先にすべて*⇒ブランク
やってる時それもちょっと考えたけど、違いはないと判断してそっちは試さなかったです。
でも、それでSubststiが減るんですね・・・・
なんでそうなるのかちゃんと考えて見ます。
投稿情報: y sakuda | 2019年7 月 7日 (日曜日) 午前 11時48分
indexはsakudaさんも使ってますね。
私のお気に入りは、一番最後の式
tもいい
投稿情報: min | 2019年7 月 7日 (日曜日) 午後 12時05分
>indexはsakudaさんも使ってますね
190くらいまで、整理できたところで、式眺めてると、最長の*を変更するところで、Reptを4回も使ってて、なんか違和感がある。で、不完全なのを全部作って最後に選ぶってのに行きつきました。
私は、ずっと、最長を一文字に変え、最後の方で、最長を*に戻す手順でやってたので、最長を処理した直後にIndexかけるって発想はなかったです。
投稿情報: y sakuda | 2019年7 月 7日 (日曜日) 午後 12時19分
私は最初からlookupありきで、考えてしまいました。
投稿情報: min | 2019年7 月 7日 (日曜日) 午後 12時29分
minさんの167は、基本的な発想が私のと同じなので、パッと見で、「ああ、そうだったか」ってなもので、良く分かります。
が、他のはなんか、良く分からず、未解読です。
なんせ、いきなり、最初の200台のやつで、IF({1,0}ってのは何じゃらほいなって感じw
今朝考えて、二次元の配列作ってるってのが見えて、感嘆^^
実は私も文字列と別に検索用のキーを作れればと思いましたが、方法が見つからず断念しました。手ってのはあるものですねーー。
で方向性が見えたのでやっと解読にかかれます。
投稿情報: y sakuda | 2019年7 月 7日 (日曜日) 午後 02時23分
くまぷーさんの500台のは完全には解読してませんが、エラー出さない正に教科書的w
他の人のはすべてValueとかNAとか発生するのが前提。
私も最初の頃のは、Max等を使うために、ISERRだったかIFErrorだったかで、Error回避してた。でもすぐMatchないしはLookupでエラーを積極利用する方向に転換。
(最初に動いた260とかのは途中で間違えて消しちゃって残ってない)
投稿情報: y sakuda | 2019年7 月 7日 (日曜日) 午後 02時31分
maronさんのは、私がIndex使う前の192と事実上同じ。
私は四苦八苦の末、そこまでたどり着いたんですが、最初からその辺り行っちゃうのがすごい。
{=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(C3,REPT("*",COUNT(FIND(REPT("*",ROW(1:99)),C3))),0),"*"," "))," 子","子")," ","*"),0,REPT("*",COUNT(FIND(REPT("*",ROW(1:99)),C3))))}
Index使い始めてから、maronさんと同じ形にできるのが分かりました。
最初にできた262、VBA入れる前のファイルに残ってました。非常にまっとうw
{=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(TRIM(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C3,REPT("*",MAX((IFERROR(FIND(REPT("*",ROW(1:99)),C3),0)>0)*ROW(1:99))),"@"),"*",""),"子","子 "))," @","@")," ","*"),"@",REPT("*",MAX((IFERROR(FIND(REPT("*",ROW(1:99)),C3),0)>0)*ROW(1:99))))}
投稿情報: y sakuda | 2019年7 月 7日 (日曜日) 午後 02時42分
minさんの全貌を解読しました。
なるほどなーーって感じです。
好みとしてはやはり167が一番すっきりしていると思いますね。
投稿情報: y sakuda | 2019年7 月 7日 (日曜日) 午後 04時41分
>くまぷーさんの500台のは完全には解読してませんが、エラー出さない正に教科書的w
そうですね。
多分、一番直線的なやり方ではないかと思います。w
投稿情報: くまぷー | 2019年7 月 7日 (日曜日) 午後 08時59分
それにしても、今回の問題trimのためにあるような問題でしたが、からくちさんは解答例にこれを使ったものをださなかった。
何か意図があつたのか?
単にうっかりしていただけなのか
ちょっと気になっていました。
投稿情報: min | 2019年7 月 7日 (日曜日) 午後 09時14分
私はTrimは途中からでした。
理由はVBAではTrimはちょっと機能が違い、中間の空白はいじってくれない。
それで、最初は思いつきませんでした^^
投稿情報: y sakuda | 2019年7 月 7日 (日曜日) 午後 10時13分
暇だったので1週間ぶりにPCを立ち上げてみました。
166
=SUBSTITUTE(SUBSTITUTE(TRIM(LOOKUP("1",T(FIND(REPT("*",ROW(1:99)),C3))&SUBSTITUTE(SUBSTITUTE(C3,"*"," "),REPT(" ",ROW(1:99)),REPT("*",ROW(1:99)))))," 子","子")," ","*")
165
=SUBSTITUTE(SUBSTITUTE(TRIM(LOOKUP("1",SUBSTITUTE(SUBSTITUTE(C3,"*"," "),REPT(" ",ROW(1:99)+0*FIND(REPT("*",ROW(1:99)),C3)),REPT("*",ROW(1:99)))))," 子","子")," ","*")
こんな式でもできそうです。
投稿情報: min | 2019年7 月13日 (土曜日) 午前 10時36分
165・・・
更に減りましたか。
どこまでいくんだろうか?
投稿情報: くまぷー | 2019年7 月13日 (土曜日) 午後 07時37分
どっちにしろ、今回はminさんの独壇場^^
投稿情報: y sakuda | 2019年7 月13日 (土曜日) 午後 10時47分