• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CSVファイルの特定列だけを呼び出し)

CSVファイルの特定列だけを呼び出し

chikuma_kayakerの回答

回答No.1

csvファイルは、データの区切り記号にルールを持たせたtextファイルですから、こういう処理には表計算ソフトよりも文字列を処理するツールを使う方が簡単で高速処理が可能です。 UNIX/Linuxには、grep、sedといったコマンドがあります。スクリプト処理言語にawk、perlというツールもあります。 Windowsに移植されていて、無償で使えます。 私なら、awkで数行のスクリプトファイルを書き、バッチファイルで再利用可能にしますね。 ファイルから読み込んだ行数から、行カウンタが指定した数値と一致していたら、その行を出力するが、不一致なら何もしないで次の行を読むようにすればよいのです。

yamanami111
質問者

お礼

chikuma_kayaker様 ありがとうございます。 現在はまだVBAでてこずってる段階ですが、勉強いたします!

関連するQ&A

  • 16384列を超えるCSVファイルについて

    xcelのVBAマクロ初心者のため、ぜひお知恵をお貸しください。 16384列をこえ、Excel上で全てのデータが参照できないCSVファイルがあり、(行は千程度) 一行目は文字列でかかれています。 例: a b C(以降は二万件) 1 ¥イチゴ¥トチオトメ ¥米¥ササニシキ 2 100 200 3 200 500 (4以降は1000行ほど) 1行目の文字列データを識別して別シートに一覧を表示するマクロを作成したいのですが、 (たとえば、¥米のグループのみを別シートに一覧表示する) こちらのマクロを作成する際、どういったやり方で行えばいいか全く思い付きません。 まず、この表示できないCSVファイルをどのようにすればうまくいくのでしょうか? 色々かんがえたのですが、まず、テキスト化させると、一行目、二行目がまとまってしまい、識別することができません。 表示可能な列数に分割することや、表示が可能なワードやアクセスにインポートする等はできるのでしょうか。 セキュリティのため、フリーソフトの類いは使えない状態です。 Excelは2016です。よろしくお願いします。

  • 項目内改行があるCSVの書式設定ができません

    お世話になります。 現在、Excel2010のVBAを使って、ある項目内に改行CRLFを含むCSVを Excelシートにコピーして加工するマクロを作成しようとしています。 CSV1レコードの例) "001","b","c","d[CR][LF] e[CR][LF] f[CR][LF] g","h" 4項目名に改行が含まれますが、1レコードあたり5項目のCSVです。 CSVをExcelに取り込むには様々な方法があると思いますが、改行を含んでいても正しく取り込める方法として、 現在は下記のようにOpenText関数を使用して読み込みを行い、シートへ貼り付けています。 Workbooks.OpenText fileName:=取り込みたいファイルの名称, StartRow:=1, _ DataType:=xlDelimited, TextQualifier:=xlTextQualifierDoubleQuote, _ ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False, _ Comma:=True, Space:=False, Other:=False, _ FieldInfo:=Array(Array(1, xlTextFormat), Array(2, xlTextFormat), _ ・・・・・・・・・・・・・・ このとき、CSVの取込自体はできるのですが、FieldInfoで指定した書式指定 (ここでは文字列をあらわすxlTextFormat)が無視されてしまい、 Excelに取り込んだときには文字列でなく標準の書式になっています。 つまり上記の例では1項目目の"001"が桁落ちして1となってしまいます。 ネットで調べたところ、OpenText関数では拡張子csvのファイルを読み込む際には FieldInfo指定が無効となるとありました。そこでファイルの拡張子を.txtに変えてみたところ、 今度は項目内改行が認識されず、行区切りの改行とみなされてしまって、項目取り込みがずれてしまいます。 なんとか、桁落ちせず、なおかつ項目内改行も正しく認識できるような方法はないでしょうか。 OpenText関数以外の方法でもかまいませんので、有識者の方々にご教授いただければ、 と思っております。 よろしくお願いします。

  • CSVファイルを全て文字列型で開く

    CSVファイルをEXEL2000で参照する際に全ての項目を文字列型で表示したいと思います。 「外部データの取り込み―>テキストファイルのインポート」 ではなくて、SendToやマクロなんかを使ってなにか良い方法があればと思うのですがなかなか思いつかないので、アドバイス等ありましたらお願い致します。 (要はユーザーさんにCSVをダブルクリックで開いて欲しくないのです。「001」 -> 「1」とかになってしまうから。)

  • VBAでCSVを文字列として取り込む方法

    VBAでCSVを文字列として取り込む方法を教えてください。 下記のようにCSVファイルを取り込んでいます。 Array関数を使用していますが、どうしても文字列として認識してくれません。 Sub CSV取り込み() Dim xlAPP As Application ' Applicationオブジェクト Dim strFILENAME As String ' OPENするファイル名(フルパス) 'Applicationオブジェクト取得 Set xlAPP = Application '「ファイルを開く」のフォームでファイル名の指定を受ける xlAPP.StatusBar = "読み込むファイル名を指定して下さい。" strFILENAME = xlAPP.GetOpenFilename(FileFilter:=cnsFILTER, Title:=cnsTITLE) 'キャンセルされた場合は以降の処理は行なわない If StrConv(strFILENAME, vbUpperCase) = "FALSE" Then Exit Sub Workbooks.OpenText Filename:=strFILENAME, _ DataType:=xlDelimited, comma:=True, _ fieldinfo:=Array(Array(1, 2), Array(2, 2), Array(3, 2), _ Array(4, 2), Array(6, 2)) Workbooks.Open Filename:=strFILENAME ActiveWorkbook.Sheets(1).Cells.Copy _ Destination:=ThisWorkbook.Worksheets("sheet1").Range("A1") End Sub この書式ではCSVを文字列として取り込めないのでしょうか? どなた様かご教示ください。 よろしくお願いいたします。

  • CSVファイルの特定列を新たなCSVファイルに変換

    ruby 初心者の50代のサラリーマンです。 若い人にrubyがいいだろうと言われて挑戦していますが、なかなか分かりません。 どなたか、教えてください。 大きなCSVファイルがあって、 1行目は項目名が入っていて不要です。 2行目以降、 各行2列目にレコード名、 各行8列目に欲しいデータが入っています。 データは29行毎に1レコード分になっています。 レコード名は各行で重複しています。つまり、 試験日,サンプルA,***,・・・・・,観測値1,・・・・・・ 試験日,サンプルA,***,・・・・・,観測値2,・・・・・・ 試験日,サンプルA,***,・・・・・,観測値29,・・・・・・ 試験日,サンプルB,***,・・・・・,観測値1,・・・・・・ 試験日,サンプルB,***,・・・・・,観測値2,・・・・・・ 試験日,サンプルB,***,・・・・・,観測値29,・・・・・・ というデータです。 それを、 サンプルA,観測値1,観測値2,・・・・・,観測値29 サンプルB,観測値1,観測値2,・・・・・,観測値29 サンプルC,観測値1,観測値2,・・・・・,観測値29 と直してcsvファイルに保存し直したいのです。 どなたか、rubyプログラムの書き方を指南して下さい。

    • ベストアンサー
    • Ruby
  • CSVファイルへの文字列データの書き出しについて

    OS:WindowsXP、Excel:2003 です。 Excelマクロ(VBA)で、あるデータをCSVファイルに出力しているのですが、 文字列型(String)を書き出すと、必ずダブルクォーテーションで囲まれます。 CSVへ書き出すときは、そういう仕様になっているということは分かったのですが、 処理の都合上、どうしてもダブルクォーテーションで囲まずに書き出ししたいと思っています。 そういう場合にはどのようにすれば良いのか教えて下さい。 ちなみに、書き出しは「Write」を使っています。

  • Excelマクロで同じブックにCSVを読み込むには

    Excelの指定したシートにCSVファイルを読み込ませたいのですが 以下のVBAマクロを実行すると新しいブックが起動して 新しいブックの方にCSVファイルが読み込まれてしまうのですが これをVBAマクロを実行しているブックの指定のシート(例えばSheet3など)に 読み込ませたいのですがどのように記述すればよいのでしょうか。 よろしくお願いします(Excel2010) Sub Macro1()  ChDir "C:\test"  Workbooks.Open Filename:= "test1.csv" End Sub

  • CSVデータから日付を正確に読み込めません

    ユーザーフォームのテキストボックスでCSVファイルを指定し、レポート用のBookに貼付けしようとするのですが、 以下のように日付がおかしくなってしまいます。 ご教授願えませんでしょうか? CSVデータ       Xlsデータ 日付(A列)      日付(A列) 2008/4/1        2001/8/4 2008/4/2        2002/8/4 2008/4/3    ⇒   2003/8/4 2008/4/4        2004/8/4 2008/4/5        2005/8/4 (B列からQ列までは数値データとなっております。) 現在、入力しているVBAは下記のような記述です。 ' "CSVデータ"をExcelで開く Workbooks.OpenText TextBox2.Value, Local:=True Cells.Select Selection.Copy Windows("Report.xls").Activate Sheets("元データ").Select Cells.Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Windows(2).Activate ActiveWindow.Close SaveChanges:=False

  • 複数ブックの特定セル列を新しいブックへ集約したい

    お願い致します。 下記の操作をVBAで行いたいと思っています。 下記画像サンプルにあるように、複数ブック(同じ階層)に同じ配列のデータがあります。 こちらの、黄色く色付けしている(実際は色付けされていません)複数列を新たなブックの1シートへ抽出したいと考えています。 列のデータ量は、各ブックごとに違っていますので、11列のデータを基準に抽出できればと思います。 複数シートを1つのシートに纏めCSVで出力するとこまではVBAで出来たのですが、 複数ブックのシート指定列を抽出して1つの違うブックへ纏めることが出来ないでいます。 どうぞご教授よろしくお願いいたします。

  • ExcelのOpenTextで作ったシートのコピー

    Excel2010のVBAでテキストファイルを読み込むと新しいブックに読み込まれるので、新しいブックのシートをVBAのコードがあるブックにコピーしたいのですが CSVファイル読み込み時に使う Workbooks.Open の場合には  Dim wb As Workbook  Set wb = Workbooks.Open(Filename:="C:\test\test1.csv")  wb.Worksheets(1).Cells.Copy ThisWorkbook.Worksheets("Sheet1").Range("A1")  wb.Close False のような感じでコピーすることができたのですが テキストファイル読み込み時に使う Workbooks.OpenText の場合には  Dim wb As Workbook  Set wb = Workbooks.OpenText Filename:= _    "C:\test\test1.txt", _    Origin:=932, StartRow:=1, DataType:=xlDelimited, TextQualifier:= _    xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:=False _    , Comma:=True, Space:=False, Other:=False, FieldInfo:=Array(Array(1, 2), _    Array(2, 2), Array(3, 2), Array(4, 2), Array(5, 2), Array(6, 2), Array(7, 2), Array(8, 2), _    Array(9, 2)), TrailingMinusNumbers:=True  wb.Worksheets(1).Cells.Copy ThisWorkbook.Worksheets("Sheet1").Range("A1")  wb.Close False とすると、OpenTextの箇所で「Workbooks.OpenText Functionまたは変数が必要です」というコンパイルエラーが発生します。Set wb = Workbooks.OpenText (Filename:=・・・・True)のように括弧でくくっても同様のエラーがでてしまいます。 Microsoft Office 14.0 Object Libratyの参照設定はチェックされています。 Workbooks.OpenText Filename:= _・・・=Trueの部分はマクロの記録の機能で生成したコードです。 このような場合、どのように記述すればよいのでしょうか。 よろしくお願いします。