• ベストアンサー

最終行の検索なんですが、、

きっと簡単だと思うのですが、最終行の検索が、、ど初心者でわかりません。 A列の最終行(可変)にあるB、C、D、Eの値を拾いたい。 データは別のシートにあります。 過去の質問を2時間くらい検索したけどVBA、マクロ関連が多く参考にできるものが見つからないのでよろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんにちは。 通常、数値データか文字データか区別しますから、 数値データの最終行 =MATCH(10^15,A:A,1) 文字データの最終行 =MATCH("^",A:A,-1) とします。 文字列・数値兼用なら、このようにします。 (ただし、こちらの式は、$A:$Aのように、列全体を取ることが出来ません) =MAX(INDEX(($A$1:$A$65535<>"")*ROW($A$1:$A$65535),,))

Naodes
質問者

お礼

=MAX(INDEX(('seet名'!A1:A1000<>"")*ROW('seet名'!A1:A1000),,)) でできました。完璧です!

その他の回答 (2)

noname#204879
noname#204879
回答No.2

貴方が思うほど簡単ではありません。 例えば、セル A1 に入力した次式(配列数式)は、別シート SheetN の列Aの最終行番号を返します。 A1: {=MAX((SheetN!A1:A1000<>"")*ROW(A1:A1000))} セル B1 に入力した次式を右方向にコピーすれば、SheetN の「A列の最終行(可変)にあるB、C、D、Eの値を拾い」ます。 B1: =OFFSET(Sheet1!$A$1,Sheet2!$A1-1,COLUMN(A1)-1)

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.1

Sheet1のA列の最終行番号は次の式で拾えます。 =MAX(INDEX(NOT(ISNA(MATCH(Sheet1!A1:A1000,Sheet1!A:A,0)))*ROW(Sheet1!A1:A1000),)) ただしSheet1の最終行が1000行より多いなら数式中の1000をもっと大きな値にしてください この式がSheet2のA1にあるとして =INDEX(Sheet1!B:B,$A$1)  →最終行のB列の値 =INDEX(Sheet1!C:C,$A$1)  →最終行のC列の値 =INDEX(Sheet1!D:D,$A$1)  →最終行のD列の値 =INDEX(Sheet1!E:E,$A$1)  →最終行のE列の値 を取得できます。

Naodes
質問者

お礼

早速ありがとうございます。 行数取得できました。 NOT(ISNA  は意味がわかりませんが無くてもできたので短めの式にしてみました。

関連するQ&A

専門家に質問してみよう