
最終行を下記の方法で取得して、CSV出力するマクロを作ってます。
lastRow = shtData.Cells(shtData.Rows.Count, 1).End(xlUp).Row
↑この処理で、A列の最終行を取得してるのですが、
A列には、「=IF(C2="","",・・・・」が入っており、集計表自体は100行まであっても、
画面上に見えてるレコードが7行だったら7レコード分だけ出力したいのですが、
100行まるまる出力されてしまいます。(セルに関数が入っているだけでカウントされてしまう)
画面に数値が表示されている最終行を取得するにはどうしたら良いでしょうか?
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.2さんの案(下記)に1票。
C列で最終列を取得する。
lastRow = shtData.Cells(shtData.Rows.Count, 3).End(xlUp).Row
C列に限らず、最終行にデータが入力されている列があるはず、だと思います。
代案
A列全体をコピーして最終列の右列に値で貼付けて、その列で最終行を取得する。
lastRow = shtData.Cells(shtData.Rows.Count, 貼り付けた列).End(xlUp).Row
貼り付けた列は消しても消さなくてもよいです。お好みで。
データ数にもよりますが、追加分による実行時間は0.1秒もかからないでしょう。
No.3
- 回答日時:
こんにちは
空白行のある対象範囲を取得する時に使う AutoFilter で・・・
With shtData
.Range("A1").AutoFilter 1, "<>"
r = .Range("A1").SpecialCells(xlLastCell).Row
c = .Range("A1").SpecialCells(xlLastCell).Column
.Range("A1").AutoFilter
間に空白行の存在する可能性を踏まえて
Open fileFllPath For Output Asの場合
For i = 1 To r
If .Cells(i, 1) <> "" Then
Print #1, Application.TextJoin(",", 0, .Cells(i, 1).Resize(1, c))
End If
Next
みたいになるのかな・・
でも
If Cells(i, 1) <> "" Thenを書くならば処理速度はともかく
lastRow = shtData.Cells(shtData.Rows.Count, 1).End(xlUp).Row
でも空白行を除き出力されますね・・・
範囲にlastRowを使って設定しているのかな
AutoFilterを使って
Range("A1").AutoFilter 1, "<>"
set r=Range("A1").CurrentRegion.SpecialCells(xlCellTypeVisible)
で範囲を取得し(Copyなどで)使う方法もアリかな?
色んなパターンをご教授いただきありがとうございます。
今回助かりましたし、次回も試せて大変助かりました。
ありがとうございました。
No.2
- 回答日時:
こんにちは
実際の表がどうなっているのか不明ですけれど・・
ご提示の計算式を見る限り、C列を参照しているようですので、A列ではなくC列の最終行を求めるのでは上手くいきませんか?
(C列が直接入力であろうと想像)
あるいは、表全体が関数等で作成されているという事でしょうか?
ご質問の文章通りに、「A列の空白以外の最終行」を求めたければ、No1様の回答の方法でも良いですし、どこかの空きセルに
=MAX(INDEX((A1:A100<>"")*ROW(A1:A100),))
を入力しておけば、そのセルの値を参照することでも得ることができます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
TV出力ポートをOFFにすれば良い...
-
4Kの外部モニターに出力すると...
-
標準出力の上書き
-
coutで出力した文字を消去する...
-
callの省略に関して
-
C# 標準出力のencodingをutf8に...
-
スマホ充電器購入にあたり
-
Microsoft365で作ったword文書...
-
スマホのバッテリー消費につい...
-
FLEXSOLARパネルからAmazonで買...
-
プログラムについての質問です...
-
ドント方式をExcel関数にすると...
-
携帯の液晶画像をパソコンに出...
-
【UWSC】WEBページ中の特定文字...
-
C言語で矩形波生成方法
-
PD充電器について
-
c 文字列の終わりを示すコード...
-
RS232Cシリアル通信について
-
javacoreの見方について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PS4コントローラーをPCでゲーム...
-
4Kの外部モニターに出力すると...
-
プログラムについての質問です...
-
Accessのテーブルからcsv出力す...
-
FLEXSOLARパネルからAmazonで買...
-
真空管 300 B の前段について
-
cout と cerrの違い
-
printfとputcharの違いは
-
スマホ充電器購入にあたり
-
PD充電器について
-
TV出力ポートをOFFにすれば良い...
-
COBOLのMOVEで桁数が異なる場合
-
Windows Formアプリからコンソ...
-
CrystalReportの文字列の折返し...
-
C#でアクセス権限の取得方法が...
-
coutで出力した文字を消去する...
-
【UWSC】WEBページ中の特定文字...
-
KEYENCEのシーケンスプログラム...
-
CRC16計算について
-
標準出力の上書き
おすすめ情報