• ベストアンサー

他のシートの最下段の値の取得 

セル式ですが、記載シートならば下記で OKですが =INDIRECT("A"& COUNTA(A:A)) 他のシート値が取得できません。 =INDIRECT (データ2!A & COUNTA(A:A)) #name? エラーが返ります データ2 は 基本 nameです。 オブジェクト名もやりましたが、だめでした。 ””など、やってみたのですが・・・・

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

  • ベストアンサー
  • nag0720
  • ベストアンサー率58% (1093/1860)
回答No.1

=INDIRECT("データ2!A"&COUNTA(データ2!A:A)) でいかが?

その他の回答 (2)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.3

こんばんは! すでに的確な回答が出ていますので、余計なお世話かもしれませんが・・・ お示しの数式の場合途中に空白セルがなければ問題ないのですが、 万一空白セルがあっても対応できる方法の一例です。 表示したいセルに =INDIRECT("データ2!A"&MAX(IF(データ2!A1:A3000<>"",ROW(A1:A3000)))) これは配列数式になってしまいますので、Ctrl+Shift+Enterで確定! この画面からコピー&ペーストする場合は 上記数式をドラッグ&コピー → 表示したいセルを選択 → 数式バー内に貼り付け → そのまま(編集かのうなまま) Ctrl+Shiftキーを押しながらEnterキーで確定! 数式の前後に{ }マークが入り配列数式になります。 ※ とりあえず「データ2」Sheetの3000行まで対応できる数式です。 配列数式はPCにかなりの負担を掛けますので、もう少し行数を増やしても大丈夫ですが、 極端にデータ量が多い場合はおススメしません。m(_ _)m

2014itochan
質問者

お礼

恐縮です。 勉強させていただきました。

  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.2

そりゃ =INDIRECT (データ2!A & COUNTA(データ2!A:A)) でしょ。

関連するQ&A

  • 結合セルの名前取得(ワークシートチェンジ時) 

    お世話になります。 結合セルの名前の取得についてなのですが 以前教えて頂いてダブルクリック時は OKになったのですがワークシートチェンジ時に Msgbox Target.Name.Nameとすると 「アプリケーション定義またはオブジェクト定義 のエラーです。」なります。 なにか制限かあるのでしょうか? 宜しくお願いいたします。

  • シート名をセルから取得したい

    作業用シートのA列に Sheet1 Sheet2 Sheet3 と、入れ B列は、そのシートのA列の個数を 作業用シートに入力していきたいのですが、 作業用シートのb1に =COUNTA(Sheet1!A:A) と入力した場合、正しい個数が返りますが シート名をA列の文字列にしたくて、 ="COUNTA("&A1&"!A:A)" こんな感じにしたいのですが、 こうすると、これが文字列になってしまいます。 =COUNTA("&A1&"!A:A) これだと、数式が間違ってますというエラーになります。 数式内でセルを参照してシート名を指定する方法を教えてください。

  • エクセルで別シートの値を取得したいです。

    エクセルで質問があります。 別シートからセル値を取得したいです。 ただ、セル番地は行番号、列番号で指定し、 行、列番号はセルに入力してある値を使いたいです。 例 Aシート(値格納シート) B1セル値=1000 -------------- Bシート(値取得シート) A列=行番号入力 B列=列番号入力 C列=Aシートの取得関数 A2セル値=1 B2セル値=2 C2セル=1000(取得値) C2セルの関数に、A2とB2の値を使って Aシートのセル値を取得したいです。 よろしくお願いします。

  • Excelのシート名の取得について

    Excelのシート名の取得について セルの式でシート名を取得することはできますか? ページヘッダーやフッターでは &[シート名] を指定すると、シート名が取得できますが、 セルの式で =&[シート名] などと入れてもエラーになるのですが、マクロを使うなどしなければシート名は取得できませんか?

  • Excel 任意の列の特定の行のみ値の取得

    書籍とサイトで教えていただいた説明などを見ながら、ExcelのVBAでセル内のデータの操作について勉強中ですが、タイトルのようなことをやる場合のオブジェクト式の選び方がわかりません。 よろしくお願いします。 例えば図のようなデータが入った"Sheet1"があり、行数、列数は様々なのですが、やりたいことは ・A列にエラーコード(ここでは"9999"または特定文字列)、空行、0が入っている行(ピンク色がついたセルのある行)は無視する。 ・任意の列がコピー元(ここでは「A列=コード」「B列=商品名」「E列=価格」で、上記に該当しないセルが対象 ・そのセルの値のみ取得し、"Sheet2"のA~C列に上から順に(上詰めで)「値」のみをはりつけたい Dim i As Long Worksheets("Sheet1").Select Rows(1).Copy Worksheets("Sheet2").Range("A1") For i = 2 To Range("A65536").End(xlUp).Row If Cells(i, "A") = 9999 And IsNumeric(Range("A" & i)) Then この記述ではこのデータ操作ではエラーを変えすのですが、 根本的な「任意の列の特定の行のみの値の取得(と他シートへの複写)」の概念がわかっていません。 正しく動作する記述において、なぜそのオブジェクト式を採用するのかも含めて教えていただければと思います。 よろしくお願いします。

  • Excel Pivot 名前の定義の値をマクロで取得

    こんにちは。いつも参考にさせていただいています。 マクロでPivotを自動更新する記述をしています。 データが入力されているシートに 名前の定義をして"データ"と名前をつけ、参照範囲を以下のとおり設定しました。 =OFFSET($A$1,0,0,COUNTA($A:$A),COUNTA($1:$1)) Pivotが表示されるシートのマクロに下記のように記述して、 自動的に更新ができることを確認できました。 Private Sub Worksheet_Activate() Range("A1").Select ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _ "データ" End Sub マクロ自体は問題なく動くのですが、 目でも確認をとりたいため、MsgBoxを追加して、現在選択されているデータ範囲を表示させたいと考えています。 例) 「データ範囲は$A$1:$D$150に変更されました」 そこで、 MsgBox "データ範囲は" & データ & "に変更されました" という一文を上記に追加してみましたが、データの部分でセルの範囲を取得できませんでした。 "データ"としてもダメで、名前の定義で指定された範囲の値を取得する方法がわかりません。 マクロで可能な仕様なのかもわからないのですが、 どなたか解決法をご存知でしたら教えていただけないでしょうか。 よろしくお願いします。

  • Range("Sheet2!A1")が何故通る?

    Excel VBAでRange関数を使っていて不思議に思う事があったので、少し質問させて下さい。 バージョンは、Office Standard 2010のVer14(32bit)です。 [Range]は、実際には[ActiveSheet.Range]の省略という認識でした。 そして、例えばSheet1がアクティブな状態で[ActiveSheet.Range("Sheet2!A1")]とすればエラーがでます。 [Range(Worksheets("Sheet2").Range("A1"))]でもエラーになります。 ところがこれが、[Range("Sheet2!A1")]だけにすると、問題なくSheet2のA1セルが取得できるのです。 セルに名前を付けた場合も、同じようにアクティブでないシートのセルが取得できました。 場合によって、Rangeの親オブジェクトがActiveSheetであったりなかったりするようなのですが、これはどのような仕様なのでしょうか? Microsoft Docsをざっと見たのですが、載ってなさそうだったので。 以下、自分がチェックに使ったコードです。 Sheet2!A1セルにShTwoという名前を付けています。 Sub test()  Debug.Print Range("A1").Address  Debug.Print Range("A1").Parent.Name ' Debug.Print ActiveSheet.Range("Sheet2!A1").Address '1004:アプリケーション定義またはオブジェクト定義のエラーです  Debug.Print Range("Sheet2!A1").Address  Debug.Print Range("Sheet2!A1").Parent.Name ' Debug.Print ActiveSheet.Range("ShTwo").Address'1004:アプリケーション定義またはオブジェクト定義のエラーです  Debug.Print Range("ShTwo").Address  Debug.Print Range("ShTwo").Parent.Name ' Debug.Print ActiveSheet.Range(Worksheets("Sheet2").Range("A1")).Address '1004:アプリケーション定義またはオブジェクト定義のエラーです ' Debug.Print Range(Worksheets("Sheet2").Range("A1")).Address ''Range'メソッドは失敗しました:'_Global'オブジェクト End Sub

  • エクセル2002 別シートのCOUNTA関数を参照して計算したい。

    シート1の(A1:A13)を参照してCOUNTA関数を使い、シート2の中で、シート2のセルB16を直接割り算したいのですが、 下記のように記述したところエラーが出てしまいうまくいきません。 =B16/COUNTA('シート1'A1:'シート1'A13) 正しく結果を出すには、どのように記述すればよろしいでしょうか? そもそもシートを跨いだ計算式は文法間違いなのでしょうか、 その点を検索してみましたが、うまくヒットできずの状況です。 ご教授頂ければ助かります、よろしくお願いします。

  • EXCELのシート名を取得して計算式を入れると

    下記のモジュールでBOOK内のシート名を取得して 一番最初のシートに計算式を入れようとしているのですが シート名が上手く取得できずに困っています. シート名が 「シート名1」,「シート名2」 ならOKですが シート名が 「シート名1-1」,「シート名1-2」,「シート名2-3」 このようにシート名に「-」が含まれると 上手く計算式が入らず セルを見ると =シート名1-'1'!$A$1 と変な所にシングルクオーテーションが挿入されてしまいます。 どのように記述したらいいのでしょうか? For Each objSheet In ActiveWorkbook.Sheets     Worksheets("総表").Cells(1, 1).Value = "=" & objSheet.Name & "!$A$1" Next ご教授ください  、よろしくおねがいします。

  • 【エクセル】シート1のデータを他のシートへ反映したい

    エクセルのシート1のデータを他のシートへ反映させる方法を教えていただきたく思います。 (検索したのですが、自分の状況とは違っていてわからなかったので新たに質問させていただきます) 具体的には、 シート1のセルA1に日付を入力します。 そうすると、シート2~シート7のセルG4にもそのシート1のA1のデータが表示されるようにしたいのです。 そして、シート1のA1のデータを変更すると、 自動的にシート2~シート7のセルG4のデータも変更されるようにしたいです。 以前は、 =シート1!A1 という式で動いていたのですが、 なぜか急に、一度セルG4を指定してenterキーを押して確定してからでないと データが変わらなくなってしまいました。 自動的に反映されるようにするにはどうすればよいのでしょうか? よろしくお願い致します。

専門家に質問してみよう