• ベストアンサー

特定行の選択、抽出

大きな数字のCSVデータを整理するとき、今までは、CTRLで1行ずつ選択していましたが、行数が大きい場合のよい方法を教えてください。マクロでやってみましたが行数が多くなるとどうもうまくいきません。選択したい行は、5、10、15、20、25、---5640。(他のシートにコピー)、規則的です。

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.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

trafficjam1
質問者

お礼

さっそくありがとうございました。 CSVインポートで実行してみましたがうまくいきました。 自分で作るのはなかな難しく助かります。 ありがとうございました。

その他の回答 (1)

  • papayuka
  • ベストアンサー率45% (1388/3066)
回答No.1

こんな意味ですか? 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

trafficjam1
質問者

お礼

さっそくご回答くださりありがとうございました。 実行してみましたがうまくいきました。 助かりました。 ありがとうございました。

関連するQ&A