こんなネストした表から(nnn)形式の番号とその後のテキストを拾い出すとしたら・・・
VBAではなくセルの数式で頑張ると
な感じだろうか・・・
一応6行目の様なケースも考慮してSEARCH関数で(nnn)な何かを判定している。
手元のEXCELは数式に改行コードが入るので、図の様に改行できて見やすい。けど、手元のPCのCPUは古いけどi9-9900でメモリ32GBだから不自由なく使えてるダケかもしれない。よくあるハズレPCアンド旧EXCELな状況ではそうもいかない。
多分、重い数式の説明やらヘルプ機能が邪魔で手に負えなくなるから、sakuraエディタで最終行を複製し1行範囲でセル座標を置換して貼り付けた方がマシな気がする。
FINDやSEARCHの検索対象を範囲指定してスピンさせる範囲分列を消費させる方法もあるけど、CONCATでかき集めないといけないし、悪質なくらいネストしている表の場合は列が足りなくなる恐れがあるので複数行な数式の方がマシな気がする。
でも行方向にスピルさせれば・・・
数式を行数分コピペしなくていいから便利かもしれない。
※範囲が1行分足りなくなった時に、数式の6を7に一斉置換するためにsakuraエディタが必須かも。
もし10ネストとかになると数式の長さに引っかかったりしそうだし、やっぱり編集も面倒!
「長いIF数式」をLAMBDA関数で括り、セル名の参照範囲に割り当ててみよう。
範囲パラメータを指定すると自動的にスピルされてしまうので、4つの番号取得を一つにまとめる方法が無いのかな?
複数列でまとめた数式をLAMBDA化してみよう
セル名の範囲をシートにすると「シート名!セル名」になってしまうのでセル名の範囲をブックに変更。
セルの数式の方も
とまれ、ここまで短くなれば十分かな。
ネストが深くなったら、
- 「複数列からxxx」の参照範囲のLAMBDAのパラメータと式を増やす
- セルの数式もパラメータ増やす
で何とかなりそう。
「複数列のxxx」セル名でBYCOL関数を使ってみる
ん-。やはり列範囲を指定した時点でスピルされてしまう。
うまく行かないや(笑
ここまで数式で頑張らなくても
シートからCSVに吐き出して、エディタでTAB(¥t)を一斉削除してシートに戻せばよいのは、秘密です。