
いつもお世話になります
OSは、win11 エクセルは、office365 です
シートが、1~12 あり月のシートです
2~12のシートで前月のシートの最終行の値を取得したい
例
2 のシートの場合
2 のシート $K$4 = 1 のシートの N 列最終行の値(参考コードでは:16)
12 のシーートの場合
12 のシート $K$4 = 11 のシートの N 列最終行の値
参考
Sub 最終行値()
Sheets("2").Range("k4") = Sheets("1").Range("N16").Value
End Sub
上記の"N16"で、 16の部分が下記の maxRow なのですがやり方に困っています
'Dim maxRow As Long
'maxRow = Sheets("1").Range("N3").End(xlDown).Row
ご指導いただきたいです
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
「うまくいきません」だけでは無く、具体的に「期待値」を書きましょう。
例えば「100のはずが67になっている」とか。最終行取得はxlUpが基本です。Nの最終セルの値なら「Cells(Rows.Count, "N").End(xlUp)」です。
又大量シートの処理はシート名ではなく、シート番号で。
ActiveSheetの番号は「ActiveSheet.Index」で取得できます。
Sheets("2")がActtiveならひとつ前のSheets("1")は
Sheets(ActiveSheet.Index-1)です。
ご指導ありがとうございます。
当初は数式の入ったN列で最終行に拘っていてダメで、
なんでうまくいかないのかと試行錯誤でした。
数式の入っていないI列に変えたら下記のようにうまく作動しました。
Sub 最終行値()
Dim maxRow As Long
maxRow = Sheets("1").Range("I3").End(xlDown).Row
Sheets("2").Range("k4").Value = Sheets("1").Range("N" & maxRow).Value
End Sub
お手数かけました。
ありがとうございました。
No.4
- 回答日時:
No3です。
あのね、No3にも書いたように、シートの状態を示さずにシートの話をされてもわかりません。
67行目が決まっていて、それを取得したいのなら、
maxRow = 67
としておけばよい。
合計欄の位置が不定で、それがシートの最終行なら、「最終行の一つ前の行」を取得すればよい。
合計欄以降にも値が入っているのなら、合計欄を検索できる方法が必要になります。
「どのようなロジックで、何をしたいのか」をきちんと整理できなければ、「思った通りの結果を得る」ことはできません。
逆に言えば、きちんと論理的な説明ができる内容なら、大抵のことは実現できるということです。
ご指導ありがとうございます。
当初は数式の入ったN列で最終行に拘っていてダメで、
なんでうまくいかないのかと試行錯誤でした。
数式の入っていないI列に変えたら下記のようにうまく作動しました。
Sub 最終行値()
Dim maxRow As Long
maxRow = Sheets("1").Range("I3").End(xlDown).Row
Sheets("2").Range("k4").Value = Sheets("1").Range("N" & maxRow).Value
End Sub
お手数かけました。
ありがとうございました。
No.3
- 回答日時:
No1です。
>上手くできません
「上手くできません」だけしか情報がないので、何をどうしたいのかも想像すらできません。
エラーは出ていないのでしょうから、「質問者様の想定と結果が異なる」というだけのことになります。
回答者にはシートの状態も、質問者様の想定も、結果もわかりませんので・・・
コードだけ見せられても、「その通りに実行しているのだな」ということしかわかりません。
とは言え・・
maxRowに一旦値を取得しているのなら、まず、その値を表示するなどして、思った値と一致しているかを確認してみてください。
End(xlDown)を利用する場合、ありそうな勘違いのケースとして
・指定セルより下が全て空白セルである場合
→ シートの最大行が取得されます
・指定セルの直下に空白セルがある場合
→ 次に値のあるセルの行が取得されます
・指定セルと目的のセルの間に空白セルがある場合
→ 空白セルの一つ手前の行が取得されます
のいずれかに該当していたりしませんか?
実際になさりたいことが不明ですが、文言通り「最終行を取得」したいのであれば、
End(xlUp)
を利用する方が確実と思います。
(こちらの場合は、(想定上の)スタート行を含めて全て空白の状態だと、スタート行より上の行を取得してしまう可能性がありますが)
※ 文章の意味がよく分からない場合は、手操作でEnd+↓やEnd+↑を行ってみれば、各種ケースでの挙動を確認することができます。
No.2
- 回答日時:
こんにちは、
>16の部分が下記の maxRow なのですが
を無視した 蛇足です
最終行 ”値”を Sheets("2").Range("k4") =値 という考え方であるなら
Sheets("2").Range("k4").Value _
= Sheets("1").Range("N3").End(xlDown).Value
で良いと思います
行№を取得してRange("A" & maxRow) や Cells(maxRow,列№)とか
あるいはOffsetなどに使うケースの方が参考サイトなども多いと思いますし
用途も広いと思いますが
ループ処理や他の列に対して同様の処理を一度に行わないのであれば直接 取得する方法も覚えておくとよいと思います(オブジェクトとして扱う)
ちなみにEnd(xlDown)は目的セルまでの途中に空白セルがあると正しく取得できません
すでに的確と思われる回答もありますので参考程度で
No.1
- 回答日時:
こんにちは
ご質問の内容がちょっとよくわからないのですが・・・
変数maxRowには値がとれていて、それを利用してセル位置を指定したいのだけれど、どうしたらいいのかわからないってことでしょうか?
Range("N16") の16の部分を変数にしたいのなら
Range("N" & maxRow)
で指定できると思います。
あるいは、Cells(row, column) を利用して
Cells(maxRow, 14)
でも指定可能です。
(N列の列番号は14)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 列の最終行に新たに入力されたらその値を自動参照 1 2023/01/21 09:59
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Visual Basic(VBA) 別シートのデータを参照して値を入れたい。 まとめデータシートのC列D列の値を商品一覧シートのコードが 7 2022/08/17 13:20
- Visual Basic(VBA) 複数csvを横に追加していくマクロについて 2 2023/04/25 09:19
- Excel(エクセル) vbaで列幅について 1 2022/11/15 08:31
- Excel(エクセル) VBAのoffsetの動き方について教えてください 3 2022/11/25 23:36
- Visual Basic(VBA) フォルダの場所を可変にしたいです(マクロ) 4 2023/05/11 10:00
- Visual Basic(VBA) コード名シートA列と集計シートA列のコードが一致したら、コード名シートA5からk12の範囲をコピーし 1 2022/08/29 23:46
- Excel(エクセル) エクセルのマクロでコピー後の貼り付け先を毎回指定したところにしたい 5 2022/08/12 10:47
- Visual Basic(VBA) excel vbaでvlooupの変数がわかりません。 7 2022/05/30 09:35
このQ&Aを見た人はこんなQ&Aも見ています
-
他のシートの一番下の行データ(可視データ)を参照する
Excel(エクセル)
-
エクセルvbaで、別シートの最下行にデータを取り込むコードを教えてください。
Visual Basic(VBA)
-
EXCEL 最終行のデータを他のセルに参照したい
Excel(エクセル)
-
-
4
エクセルで空白セルを含む列の最終行の値を取得する式を教えてください
Excel(エクセル)
-
5
Excel VBA、 別ブックの最終行セルへのコピー&値ペースト
Visual Basic(VBA)
-
6
vba 2つの条件が一致したらコピーして別シートに値のみ貼り付け
Visual Basic(VBA)
-
7
Excel VBA マクロ ある列の最終行迄を参照し、別の列の空白セルに値を入力したいです
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルのVBAで集計をしたい
-
【画像あり】オートフィルター...
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
Office2021のエクセルで米国株...
-
エクセルの関数について
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】【配列】3つのシー...
-
他のシートの検索
-
【マクロ】オートフィルターの...
-
ページが変なふうに切れる
-
【マクロ】列を折りたたみ非表...
-
【関数】同じ関数なのに、エラ...
-
【条件付き書式】シートの中で...
-
【エクセル】期限アラートについて
-
Excelファイルを開くと私だけVA...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
9月17日でサービス終了らし...
-
エクセル
-
【マクロ】WEBシステムから保存...
-
エクセルの循環参照、?
-
エクセル ドロップダウンリスト...
-
エクセルのdatedif関数を使って...
-
特定のセルだけ結果がおかしい...
-
【マクロ】A列にある、日付(本...
-
【マクロ】EXCELで読込したCSV...
-
【マクロ】アクティブセルの時...
-
【エクセル】期限アラートについて
-
iPhoneのExcelアプリで、別のシ...
-
【関数】同じ関数なのに、エラ...
-
Excelの新しい空白のブックを開...
-
【マクロ】3行に上から下に並...
-
【マクロ】宣言は、何のために...
-
VBA チェックボックスをオーバ...
-
Excelについての質問です 並べ...
-
【マクロ】アクティブセルの2...
-
【関数】不規則な文章から●●-●●...
おすすめ情報
ご指導をありかとうございます
私なりに下記のようにしたのですが上手くできません
どこが悪いのでしょうか
再度ご指導をいただけると嬉しいです
シート2 の場合 (シート2~シート12 同様に)
シート1 N列の最終行の値を シート2 K4 に入れたい
Sub 最終行値2()
Dim maxRow As Long
maxRow = Sheets("1").Range("N4").End(xlDown).Row
Sheets("2").Range("k4").Value = Sheets("1").Range("N" & maxRow).Value
End Sub
ご指導をありかとうございます
私なりに下記のようにしたのですが上手くできません
どこが悪いのでしょうか
再度ご指導をいただけると嬉しいです
シート2 の場合 (シート2~シート12 同様に)
シート1 N列の最終行の値を シート2 K4 に入れたい
Sub 最終行値0()
Sheets("2").Range("k4").Value = Sheets("1").Range("N4").End(xlDown).Value
End Sub
私なりに原因がわかりました
1 N列に数式がある
数式を削除して、下記の2も削除すると動作してくれる
2 N列の68行目に合計の数式がある
※今迄通りではN列に数式があり maxRowは 67です
上記の 1 2 の数式を削除すると下記で動作してくれますが、
N列の数式は削除したくない
この場合の最善策をご指導をお願いできますか
参考
Sub 最終行値2()
Dim maxRow As Long
maxRow = Sheets("1").Range("N4").End(xlDown).Row
Sheets("2").Range("k4").Value = Sheets("1").Range("N" & masxRow).Value
End Sub