« この歌詞訳せますか~? 第43回  さらば涙と言おう | メイン | エクセル de ドット絵 蒲原 »

2019年7 月 6日 (土曜日)

コメント

くまぷー

誰も来ないうちに・・・

513と言っていたけど、ヤケのやんパチ・・・533文字!!
{=SUBSTITUTE(LEFT(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(C3,REPT("*",MAX(IF(LEN(SUBSTITUTE(C3,REPT("*",ROW(A1:A99)),))

maron

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

{=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,"*")}

くまぷー

途中で消えてしまった・・・
不等号を全角にして・・・

{=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),"@","*")}

min

最初から、皆さんと方向性が少しだけ違ったみたいです。
携帯からなのではっきり見てませんが。

持ってきたものをゆっくり順次貼り付けます。
同じような式もありますが。

やってみた順

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

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

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

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))))))," 子","子")," ","*")}

y sakuda

遅くなりました。今帰ってきました。
皆さんの拝見してませんが、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

くまぷーさんの途中で消えてませんか?

y sakuda

皆さんの、シートにコピーしながら眺めただけですが、minさんのはあちこち私と違うことやってるみたいですね。

min

ねてしまいました。


面倒なので残り全部

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

最後の169の式はifをtにかえればちょっと減りますね?

maron

◆minさんの、INDEXの使い方がすごい!!

y sakuda

うーーん、minさんの167やってることは私とほとんど同じ。
違いは先にすべて*⇒ブランク
やってる時それもちょっと考えたけど、違いはないと判断してそっちは試さなかったです。
でも、それでSubststiが減るんですね・・・・
なんでそうなるのかちゃんと考えて見ます。

min

indexはsakudaさんも使ってますね。
私のお気に入りは、一番最後の式
tもいい

y sakuda

>indexはsakudaさんも使ってますね
190くらいまで、整理できたところで、式眺めてると、最長の*を変更するところで、Reptを4回も使ってて、なんか違和感がある。で、不完全なのを全部作って最後に選ぶってのに行きつきました。
私は、ずっと、最長を一文字に変え、最後の方で、最長を*に戻す手順でやってたので、最長を処理した直後にIndexかけるって発想はなかったです。

min

私は最初からlookupありきで、考えてしまいました。

y sakuda

minさんの167は、基本的な発想が私のと同じなので、パッと見で、「ああ、そうだったか」ってなもので、良く分かります。
が、他のはなんか、良く分からず、未解読です。
なんせ、いきなり、最初の200台のやつで、IF({1,0}ってのは何じゃらほいなって感じw
今朝考えて、二次元の配列作ってるってのが見えて、感嘆^^
実は私も文字列と別に検索用のキーを作れればと思いましたが、方法が見つからず断念しました。手ってのはあるものですねーー。
で方向性が見えたのでやっと解読にかかれます。


y sakuda

くまぷーさんの500台のは完全には解読してませんが、エラー出さない正に教科書的w
他の人のはすべてValueとかNAとか発生するのが前提。
私も最初の頃のは、Max等を使うために、ISERRだったかIFErrorだったかで、Error回避してた。でもすぐMatchないしはLookupでエラーを積極利用する方向に転換。
(最初に動いた260とかのは途中で間違えて消しちゃって残ってない)

y sakuda

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

minさんの全貌を解読しました。
なるほどなーーって感じです。
好みとしてはやはり167が一番すっきりしていると思いますね。

くまぷー

>くまぷーさんの500台のは完全には解読してませんが、エラー出さない正に教科書的w

そうですね。
多分、一番直線的なやり方ではないかと思います。w

min

それにしても、今回の問題trimのためにあるような問題でしたが、からくちさんは解答例にこれを使ったものをださなかった。
何か意図があつたのか?
単にうっかりしていただけなのか
ちょっと気になっていました。

y sakuda

私はTrimは途中からでした。
理由はVBAではTrimはちょっと機能が違い、中間の空白はいじってくれない。
それで、最初は思いつきませんでした^^

min

暇だったので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)))))," 子","子")," ","*")

こんな式でもできそうです。

くまぷー

165・・・
更に減りましたか。
どこまでいくんだろうか?

y sakuda

どっちにしろ、今回はminさんの独壇場^^

コメントの確認

コメントのプレビュー

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

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

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

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

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

処理中...

コメントを投稿

アカウント情報

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

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