見出し画像

指定した数だけ行を空ける数式を作って

備忘録、後で、読み返したいので、noteで記録してきます。

■ ワイの回答

=MAP(TAKE(SEQUENCE((IF(B1=0,1,B1*(B1+1)))*10,,0,1)/(IF(B1=0,1,(B1+1)))+1,(B1+1)*10),LAMBDA(x,IF(MOD(x,1)>0,"",x)))

もう、ゴリ押しExcel数式です。
私の数式は、1~Nの連番を作って、間隔数で割り算して、余剰が0でなければ、空白を返して、0なら、数値を返す数式にしていますが、あちこち、+1ってあって、読みにくいです。
天才達の回答が楽しみです。

1.takasanZ様のご回答

=LET(_X,B1+1,_VALUES,SEQUENCE(10*_X,,,1/_X),IF(_VALUES=INT(_VALUES),_VALUES,""))

実は、この数式を見た時、衝撃を受けました。
SEQUENCE関数って、小数点の値でもカウントアップできるんだ!って。
ワイの回答の考えと同じですが、ワイより数式がシンプルで美しい。
ワイの回答、恥ずかしくて公開できないよ。

2.mir様のご回答

=TEXTSPLIT(TEXTJOIN(REPT(",",B1+1),0,SEQUENCE(10)),,",")

文字列になっていますが、考え方が素晴らしいと思いました。
頭良すぎ!斬新!って思いました。
今回も、TEXTSPLIT関数、TEXTJOIN関数で配列を作り出す良い数式だと思いました。

3.y.yusuke様のご回答

=TOCOL(EXPAND(SEQUENCE(10),10,(B1+1),""))

でました!シンプル回答!
こちらも、目から鱗の回答です。
EXPAND関数で空白を作っています。そして、TOCOL関数で、行にしています。 
なるほどーです。(いつも凄い関数を作ってくれる、ほんと凄い!)

で、追加の回答も頂いております。
お得意の「Excel 2016」でチャレンジ

=IF(AND(ROW()<($B$1+1)*10,MOD(ROW(),$B$1+1)=1),CEILING(ROW()/($B$1+1),1),"")

& ダウンコピー
CEILING関数??? 普段使わない関数だと思うのですが、よくこんな関数をご存じ!だと思いました。
切り上げしてくれる関数ですかね? わかんねーw

4.光希桃様のご回答

=IFERROR(SEQUENCE(10*(1+B1)-B1,1,B1+1)/(B1+1)/(MOD(SEQUENCE(10*(1+B1)-B1,1,0)/(B1+1),1)=0),"")

こちらは、ワイの回答例を同じになりますね。
ただ、2個目も作っています。こちらが、凄い。

=IFERROR(FILTERXML("<a><b>"&TEXTJOIN(REPT("</b><b>",B1+1),,SEQUENCE(10))&"</b></a>","//b"),"")

ワイの数式の力では、読めない・・・ほんと、回答してくれて嬉しいですが、FILTERXML関数が分からんのです(涙)

●感想

まじ、皆様、凄すぎ。
見たこと無い関数を使っている事例が多くて、びっくりしました。
で、前回の問題も思ったのですが、「TEXTSPLIT関数とTEXTJOIN関数で配列を作成」が登場しました。
もしかして、有名な方法なんですかね。一見数式が長くなって、読みにくいと思っても、意外に読みやすいです。

それと、新関数は、やはり強力ですね。数式が一気にシンプルになります。

Microsoft 365 契約が必要ですが、やっぱ、最新の関数や機能が使えるって、最強だと思います。


この記事が気に入ったらサポートをしてみませんか?