![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
いつもお世話になります
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 最終行のデータを他のセルに参照したい
Excel(エクセル)
-
エクセルで空白セルを含む列の最終行の値を取得する式を教えてください
Excel(エクセル)
-
他のシートの一番下の行データ(可視データ)を参照する
Excel(エクセル)
-
-
4
VBA別シートの最終行の次行へ転記したい。
Visual Basic(VBA)
-
5
別のシートから値を取得するとき
Visual Basic(VBA)
-
6
エクセルVBAで行削除時にエラーが発生します。
Excel(エクセル)
-
7
excelで入力の最終行に移動するには
Visual Basic(VBA)
-
8
エクセル:データが入った最終行の行番号の取得
Excel(エクセル)
-
9
特定セルの内容を更新したら、その更新日を自動的に表示する方法について
Excel(エクセル)
-
10
エクセルで「500時間」を「何日と何時間」で表示したい
その他(パソコン・スマホ・電化製品)
-
11
マクロで最終行を取得してコピーしたい
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データチェックを行うエクセル...
-
再質問です。マクロの修正箇所...
-
エクセルの数式バーのフォント...
-
エクセルで「ページレイアウト...
-
2列に入っているデータを1列...
-
【ExcelVBA】名前を付けて保存→...
-
エクセルでファイルの最終更新...
-
Excel VBAで全ての矢印を赤色に...
-
数字入力後他の文字等が表示さ...
-
【ExcelVBA】ダブルクォーテー...
-
エクセル関数を使って
-
エクセルで 自動的に◯や数字を...
-
Excelについて
-
【Excel】別シートから条件に合...
-
【マクロ】VLOOKUPにて参照元に...
-
エクセルの問題です。絶対値の...
-
エクセルのセルに同じ大きさの...
-
エクセルをエクセレントに究める
-
Excel 小さくなったスクロール...
-
エクセルのツールバーから数値...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報
ご指導をありかとうございます
私なりに下記のようにしたのですが上手くできません
どこが悪いのでしょうか
再度ご指導をいただけると嬉しいです
シート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