- ベストアンサー
get.document
WIN98SE Excel2000を使用しています。 A3:C3000までデータが入っています。空白行はありません。日々挿入・削除をしています。 A1で名前の定義で 名前 =Saigo 定義 =get.document(10)+now():0 と入力し、A1に「=Saigo」と入力すると 3000と返されるはずが、3015とかが返されます。 3015行には何も入力されていないのですが。 どこか間違っているのでしょうか
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>get.document(10)+now():0 これは get.document(10)+now()*0 のことでしょうか。 Excel4.0マクロ関数を使って最終行を出しているはずです。(now()*0 は再計算用でしょうか) ここでの『最終行』は今までに使った最終行と考えるべきでしょう。 A3015 に入力値があって、行削除でA3000が最終行になったとしても、この関数が返す値は、3015のままです。 この算式が、画面の見た目を表示してくれるのは、3015行よりも下を使ったとき、 または上書き保存して再計算したとき、保存して再度開いたときでしょう。 これは、VBAの SpecialCells(xlCellTypeLastCell) と同じ仕様でしょう。 見た目の最終行を返すようにするには、Excel4.0マクロ関数よりも、下のようなユーザー定義関数を 作る方法もあります。下は、A列で判定している例です。シート全てで使えるようにするには、少しコードが長くなります。 標準モジュールに貼り付けて、セルに =LastRow() のように入力します。ご参考に。 Function LastRow() Application.Volatile LastRow = Range("A65536").End(xlUp).Row End Function
その他の回答 (1)
- imogasi
- ベストアンサー率27% (4737/17070)
私の不勉強といえばそうなんですが 「定義 =get.document(10)+now():0」を初めて見るし、なんのことか判りませんでした。エクセル4.0の旧マクロの存在は知っていましたが、それらしいとのこと。 エクセル2000でそんなものを使わないほうが良いと思います。質問の通りやって見ましたが、再現できませんでした。 多分関数式で「=counta(a2:a10000)とかで求められる数値ではないでしょうか。 また関数式を自作するなら、Module1に Function saigo(a) Worksheets("sheet1").Activate saigo = Range("A65536").End(xlUp).Row End Functionといれる。 セルA1には=saigo(A1)といれる。 #1のご回答とほぼ同じ。ただ「=saigo(A1)」とA1が 必要のよう。(エクセル2000)
お礼
get.document(10)+now()*0の間違いでした。 ありがとうございました。 お礼が遅くなり、すみません。 急な出張を仰せつかり、昨日まで当サイトを見られませんでした。 問題点ですが、一旦閉じて再度開くと直っていました。 ただ、以前は行の挿入・削除の度に変わっていたので、 どうしたのかなと思ったのです。 VLOOKUP関数の範囲指定でINDIRECTとADDRESSを使って最終行を決めています。
お礼
get.document(10)+now()*0の間違いでした。 ありがとうございました。 お礼が遅くなり、すみません。 急な出張を仰せつかり、昨日まで当サイトを見られませんでした。 問題点ですが、一旦閉じて再度開くと直っていました。 ただ、以前は行の挿入・削除の度に変わっていたので、 どうしたのかなと思ったのです。 VLOOKUP関数の範囲指定でINDIRECTとADDRESSを使って最終行を決めています。