- ベストアンサー
特定行の選択、抽出
大きな数字のCSVデータを整理するとき、今までは、CTRLで1行ずつ選択していましたが、行数が大きい場合のよい方法を教えてください。マクロでやってみましたが行数が多くなるとどうもうまくいきません。選択したい行は、5、10、15、20、25、---5640。(他のシートにコピー)、規則的です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは。 意味が違うかな?CSV から直接インポートします。 理論的には、32万行まで、インポートできる計算になります。 '-------------------------------------------------------------------- Sub CSVImportTest() Dim strFName As String Dim Fno As Integer Dim i As Long Dim j As Long Dim buf As String Dim bufTotal As String Dim Ar As Variant Dim ArLine As Variant Const DIVNUM As Integer = 5 '何行目ずつ 'ファイル名の取得 strFName = Application.GetOpenFilename("CSVファイル(*.csv),*.csv") Fno = FreeFile() Open strFName For Input As #Fno Do Until EOF(Fno) i = i + 1 Line Input #Fno, buf If i Mod DIVNUM = 0 Then bufTotal = bufTotal & vbCrLf & buf buf = "" End If Loop Close #Fno Ar = Split(bufTotal, vbCrLf) For j = LBound(Ar) To UBound(Ar) ArLine = Split(Ar(j), ",") If UBound(ArLine) > -1 Then Cells(j, 1).Resize(, UBound(ArLine)+1).Value = ArLine If j > 65535 Then MsgBox "これ以上は入りません。", vbApplicationModal: Exit Sub '65536行以上入れる場合は、新たにご相談ください。 End If Next j End Sub
その他の回答 (1)
- papayuka
- ベストアンサー率45% (1388/3066)
こんな意味ですか? Sub Test() Dim r As Range i = 5 Set r = Cells(i, 1).EntireRow Do While Range("A65536").End(xlUp).Row >= i Set r = Application.Union(r, Cells(i, 1).EntireRow) i = i + 5 Loop r.Copy Set r = Nothing End Sub
お礼
さっそくご回答くださりありがとうございました。 実行してみましたがうまくいきました。 助かりました。 ありがとうございました。
お礼
さっそくありがとうございました。 CSVインポートで実行してみましたがうまくいきました。 自分で作るのはなかな難しく助かります。 ありがとうございました。