<追記>
正解
</追記>
「
vba オートフィルター 有無」辺りで検索するとわんさか出てくるんですが、方法として滅茶苦茶下から上にデータあるセルを見つけてその行がヘッダ行かどうかで判定しろ、とかWorksheetFunctionのSUBTOTAL使えとかが出てきますでしょ?
何でかしらー。フィルターかけたら可視の行数数えればいいのに、と思うわけです。
で、なんでかできないんだねって話です。
まぁこんな感じのデータがあって「担当者100のIDリストをCSVでくれ」とか言われたら、まぁとりあえず担当者のIDでフィルターかけるじゃないですか・・・。データ4行、ヘッダ行あり・・・。
( ´゚д゚`)エー
ヘッダ行の次の行がとれちゃってるのかな? とか思ったんですが、コード101にしたら
$A$1:$D$1,$A$3:$D$3,$A$9:$D$9,$A$11:$D$12
$A$1:$D$1,$A$3:$D$3,$A$9:$D$9,$A$11:$D$12
$A$1:$D$1,$A$3:$D$3,$A$9:$D$9,$A$11:$D$13
1
1
1
12
5
1はまずいっしょー。ヘッダ行だけの場合と区別つかんじゃないですかぁ(´;ω;`)ウゥゥ
今回もちゅんちゅん氏(@KotorinChunChun)に聞きましたが僕の力ではどうにもならないです(´・ω・`)
Option Explicitは(楽だからw)つけない主義でしたが、ちゅんちゅん氏の主張に感化されてつけるようになりました(*^▽^*)
ちなみにいつも私はこんな感じです
Sub Macro1()
If ActiveSheet.AutoFilterMode Then ActiveSheet.AutoFilterMode = False
Dim r As Long: r = Range("A1").End(xlDown).Row
Dim c As Long: c = Range("A1").End(xlToRight).Column
ActiveSheet.Range("$A$1").AutoFilter Field:=1, Criteria1:="101"
Dim r2 As Long: r2 = Range("A1").End(xlDown).Row
If r2 > r Then
Else
Range(Range("B1"), Cells(r, 2)).Copy
Workbooks.Add
ActiveSheet.Paste
Application.CutCopyMode = False
ActiveWorkbook.SaveAs Filename:="C:\test\101_test.csv" _
, FileFormat:=xlCSV, CreateBackup:=False
ActiveWindow.Close (False)
End If
End Sub
これで101のところを担当者コードの配列にしてfor each nextかdo loopでぐるぐるさせる感じです。