- hoehoe1234
- 1178
- 0
- 0
- 0
ワークシートでの動的範囲、スピル版。スピルは「スピル全体」をたとえば他の関数から使用する場合にA:1#と指定できるのでとても便利。ただし行または列のどちらか一方しか自動拡張できないみたいです。 pic.twitter.com/CdoxVG18IS
2021-06-14 16:10:58旧来の方法。参照用のシートを用意することによりスピルとして扱えるので便利。名前の定義は範囲拡張に対応していなかったみたいです。 pic.twitter.com/MoamLhEXoK
2021-06-14 16:30:52一方、フィルター関数による動的拡張は、式を名前定義してもうまく動くので、行、または列の一方しか拡張する必要がなければfilter関数+名前定義による動的拡張であれば余計なシートを作成する必要がなくなります。 pic.twitter.com/3nr5ShpTuW
2021-06-14 16:40:13レンジはカレントリージョンがとれるし、スピルしてるのならちゅんさんが投稿したようにスピル範囲も取れます。VBAから範囲を確定する手法が増えたことはうれしですね。さて、エクセルのワークシート関数でこれらのどのようにすればよいでしょうか?
2021-06-14 16:46:25今の所 ①テーブル機能を使う ②offset+match ③filter+名前定義 の3つの手法がありそうです。ユーザ定義関数はどうしても引数と戻り値の自己参照が発生してしまいうまく使用することができませんでした。
2021-06-14 17:03:55元データはいじらない。という原則があるので、動的範囲がエクセルの数式で欲しい場合は、いきなりフィルタ+名前定義よりもやはり作業シートを1つ導出するほうがわかりやすさから理にかなっているように思います。元シートはガツンとコピーされますしね。
2021-06-14 17:40:37検証はしていませんが、フィルターを使う場合、他の関数と組み合わせればフィルター関数でも行・列指定で動的範囲が取得できると思います。
2021-06-14 17:42:10フィルター関数を使った動的縦横参照でけた。とはいえ、indirectをつかっているし、countaも使っているので実質、offset+counta方式のほうが優れている・・・・。しかし、できるには、できた! pic.twitter.com/nodOsa6ByZ
2021-06-16 04:35:37動的拡張される元データシートは隣に参照用のシートつくったほうがいいのかな?そうすればそのシートのA1を起点に「参照用!A1#」で参照できるし、名前つけてもちゃんとうごきそうだね。絞り込み条件とか考慮すると「導出表」って感じなんだろうね。VBAで導出表の自動さくせもできそうだしね。
2021-06-17 16:19:03これで動的範囲がスピルで取れるので、他の数式は「動的範囲4#」という指定で動的範囲が対象にできますね。 pic.twitter.com/iccudd23gf
2021-06-17 16:24:42いまさらだけど@とか#がテーブル、新関数でつながってきてうれしいね。新関数のなにが楽しいって、index+matchに類するイデオム、組み合わせをどんどん自分で作っていけること。かつ、他の機能との組み合わせ性。新機能は「セル転記」のために生まれたんや!
2021-06-21 02:02:03何らかの事情で元シートデータがテーブル化できないばあいの、動的参照範囲。どうして一旦このようにするかといえば、シート名!A1#で全動的範囲が取れるから。 しかし、なにか間違っている感が???。。。 pic.twitter.com/nvQvYx7RZg
2021-06-21 02:58:03これを更に、直接名前として登録したものがこれ。 名前で動的範囲が取れています。う~~~ん。ちょっとなんか違うような? pic.twitter.com/FFxo3MpGq3
2021-06-21 03:00:31スピル範囲の1行目(行ヘッダ)だけを取得するのはこんな感じで簡単。 pic.twitter.com/hIpxUZazdg
2021-06-21 03:02:29テーブルのDataBodyRange相当の、行ヘッダを除いたデータ部だけをスピル#から取得。「空白」はインターセター演算子なのでデータ部分のみが取得できています。しかし、なんか違う気がwww。 pic.twitter.com/NHg9Vf20H9
2021-06-21 03:04:06今日のワクVでも生徒さんとはなしたんだけど、生データがシートにあって、必要な勘定科目シートがあれば、VBAで勘定科目シートを自動作成して、そのシートのA1にスピル式を設定することにより、勘定科目に合致するデータだけをfilter等で自動的に引っ張ってこれそうだね。自動振り分け機能みたいな?
2021-06-21 03:06:22もちろん、VBAで全部やればいいんだけど、現場ではVBAが分かる人ばかりではないので、シートのA1にスピル式をいれておけば、やってることと自分でも手作業で追加したり、直したりできる。からね。
2021-06-21 03:07:17これからはますます、 ①テーブル機能 ②スピル式 ③パワークエリ ④VBA の組み合わせ方がいろいろ出てきそうですね。VBAはファイル周りとかどうしても機能ではできな部分をカバーしそうですね。
2021-06-21 03:08:51何らかの事情でテーブルを使わないで動的範囲を利用する場合はこれでいいかな。名前定義に直接indirectの式を書ける。とはいえ、スピルしないと意味がないのでスピル前提になりますが。 pic.twitter.com/4H5l0IUEBE
2021-07-02 05:37:13