追記:getRangeEdgeメソッドが追加されたので短いコードで処理できるようになりました。簡単に指定した列の最終セルを取得する方法について記事を書きました。追記:さらに簡単に指定した列の最終セルを取得する方法について記事を書きました。Overflowを見ていて、もっと簡単な方...Excelの処理を自動化する際、データが入っているセル範囲の中の最後のセル(=最終セル)を取得し、その一つ下のセルから入力を行いたい場合が多々あります。VBAなら下記のように「End」プロパティを使うのが鉄板ですね。ほんの数行で最終セルが取得できます。ScriptsではこのEndプロパティ(あるいは類するプロパティやメソッド)が見つかりません。私の探し方が悪いだけかもしれませんが、「操作の記録」でもセル移動は記録されませんでした。仕方が無いので、どうすれば列を指定して“データが入っているセル範囲の最後のセル”を取得できるのかを試行錯誤してみました。getRangeメソッドとgetLastCellメソッドRangeオブジェクトには、セル範囲内の最後のセルを取得するgetLastCellメソッドが用意されています。ところが、下記コードのように、列を指定してセル範囲を取得す(Worksheet).getRangeメソッドと組み合わせた場合、データが入っているセルとは関係無く、指定した列の最後のセルが取得(下記の場合、セルA1048576)されるため、目的を達成できません。getUsedRangeメソッドとgetIntersectionメソッドWorksheetオブジェクトには、データが入っているセル範囲を取得するgetUsedRangeメソッドが用意されています。このメソッドと(Range).getIntersectionメソッドを組み合わせることで、“データが入っているセル範囲の中の指定した列”のセル範囲を取得できますが、この列の最終セルが“データが入っている最後のセル”であるとは限りません。getSpecialCellsメソッドとgetRowsAboveメソッドRangeオブジェクトには、指定した種類のセル範囲コレクションを取得するgetSpecialCellsメソッドが用意されています。このメソッドを使うことで、データが入っていない空白のセル範囲をコレクションとして取得し、コレクションの一番最後のセル範囲、その一つ上のセルをgetRowsAboveメソッドを使って取得することで、指定した列の最後のデータが入ったセルを取得できます。図で示すと下図のようになります。まとめこれまでの処理をまとめると、下記のようなコードになりました。長い!!しかも数万行使っているシートだと空白セルの取得時点(getSpecialCells)で固まる可能性もあります。あれやこれやと考えているうちにこんなに冗長になってしまいましたが、これは改善の余地がありそうです。こんなコードでもどなたかのご参考になれば幸いです。Scripts」関連の記事をまとめてみました。スクリプトの記事です。(2)トラックバックは利用できません。角田さんご無沙汰しております。Scriptsも、私が知らないだけで何か他にもっと良い方法あるんじゃないのかなー?とは思うのですが・・・(@_@;)返信をキャンセルする。スクリプト、リボンのカスタマイズに関する話題を中心に情報発信しています。2016でマップグラフを作成する。