指定した数だけ行を空ける数式を作って
備忘録、後で、読み返したいので、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 契約が必要ですが、やっぱ、最新の関数や機能が使えるって、最強だと思います。
この記事が気に入ったらサポートをしてみませんか?