質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

7563閲覧

エクセルVBA最終行から2番目をとる。空白あり

progra

総合スコア51

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/12/03 02:35

編集2020/12/03 04:01

以下のようなデータがあります。

3

4
2
1

6

4
4
5

6

空白がある場合、最終のデータから2番目の5の行番号を取得することはできますか?

最終行はmaxrow = Cells(Rows.Count, 1).End(xlUp)
で得られることはわかりました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

radames1000

2020/12/03 03:27

コードやエクセルの表を提示していただくと回答がつきやすいと思いますよ。
guest

回答2

0

ベストアンサー

2番目の行をmaxrow2としています。
※行番号の取得でいいんですね?

vba

1maxrow = Cells(Rows.Count, 1).End(xlUp).Row 2If Cells(maxrow - 1, 1) <> "" Then 3 maxrow2 = maxrow - 1 '最終データのすぐ上にデータがある場合 4Else 5 maxrow2 = Cells(maxrow, 1).End(xlUp).Row '最終データのすぐ上が空欄の場合 6End If

投稿2020/12/03 04:06

radames1000

総合スコア1925

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

progra

2020/12/03 11:39

ありがとうございます。これは、5と6の間が1セル空いているからできると思うのですが、他の場合はできますか?2マス、5マスとかにも自動対応したいのですが。
progra

2020/12/03 13:25 編集

すこし複雑なデータになるとなぜかできなかったのです。For文を最下行の1つ上からマイナス側に回すことででき、自己解決しました。回答ありがとうございました。
radames1000

2020/12/03 13:55

提示された情報では読み取れないので、なんとも言えませんが... 解決してよかったです。
guest

0

変数の適用範囲
こちらのモジュールレベル変数を使うことで、maxrowの値を保存しておくことができます。
↓例

VBA

1Dim maxrow As Long 2 3Private Sub Worksheet_Change(ByVal Target As Range) 4Dim maxrow1 As Long 5 6maxrow1 = Cells(Rows.Count, 1).End(xlUp).Row 7 8MsgBox maxrow & "," & maxrow1 9 10maxrow = maxrow1 11 12End Sub

投稿2020/12/03 04:01

Usirow

総合スコア364

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

radames1000

2020/12/03 04:41

ファイルを閉じなければ一番手っ取り早いですね。 質問者様の使い方が気になるところです。
Usirow

2020/12/03 06:02

わたしが回答したときは、changeイベントで取得した最終行と、その一つ前のchangeイベントで取得していた最終行とを使って計算したい、という風な文章だったのでこのような回答になりました。 ですが、現在の質問文のロジックでいいのならradames1000様のやり方が確実かと思います。 モジュールレベル変数って、不必要に使うとバグの温床になりますし。
progra

2020/12/03 13:23

わかりづらい質問だと思ったので変えました。失礼しました。モジュールレベルは知らなかったので勉強になりました。ありがとうございます。
Usirow

2020/12/04 01:44

タイミングの問題なので、こればっかりは仕方ないですね。 私も偉そうに言えた身ではありませんが、より簡便なロジックで狙ったことが出来るならそれが一番いいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問