• 締切済み

読み込んだCSVファイルの再検索

VBを用いてかなり大きいCSVファイルから、 ある条件に合うデータを検索するプログラムを作成しています。 日付などの条件をFORMに配置し、絞れるようにしております。 VB読み込み→検索にだいたい2分くらいかかるのですが、 条件を変更して再検索するときに、再度VB読み込みが必要になります。 一度メモリーに読み込んだ値から再検索かけられれば、 2回目以降の検索が早くなると思うのですが、 そのようなことは可能でしょうか。 要はこのようなことを実現したいです。 1.Button1.Click 2.CSVファイル読み込み 3.条件に合うものを検索(終了しない。配列の値を破棄しない) 4.再度Button1.Click 5.(CSVファイルの読み込みは飛ばして)条件に合うものを検索 WindowsXPでVB.NETを使用しております。 ご教授願います。

みんなの回答

  • MARU4812
  • ベストアンサー率43% (196/452)
回答No.4

検索するなら、配列より、 コレクションを利用したような自作クラスを作成するか、 DataTable に入れるか したほうが便利かもしれません。

回答No.3

CSVファイル読み込んだデータが、i行j列であるとして、 Dim AAA() Dim X,Y,i,j i=算定式 j=算定式 ReDim AAA(i,j) For X=1 To i For y=1 To j AAA(i,j)=Cells(i,j).Value Next Y Next X にて、読み込んだデータを配列AAA(i,j)として保管し、 配列AAA(i,j)を検索する方法をお考えになれば、 と思います。 また、再度のButton1.Clickをどういう方法で取得するかということは、 Button1.Clickの回数毎に加算される変数を用意し、 その回数に応じた、MsgBoxを用意しておき、 Clickする人にClickする意味を伝達するのは如何でしょうか。

回答No.2

VB.NETは使ったことは無いのですが、普通に考えると・・・ 配列をグローバル変数で定義しておき、初回のみCSVファイルからその配列に読み込み検索する。 2回目以降は検索のみ行う。 初回かどうかの判定はスイッチをグローバル変数で定義する、又はその配列をチェックする。 ・・・ではどうでしょうか。

noname#259269
noname#259269
回答No.1

メモリが十分あって、CSVをすべてメモリに読み込んでおけるのであれば、可能も不可能も、 貴方が記載した通りにプログラムするだけだと思うのですが。。。 どこで詰まっているのでしょうか?

shinjo0722
質問者

補足

Button1.Clickのボタンで、 読み込み・検索がスタートするようにしており、 検索が終わると結果をListBoxに出力させています。 その後、End Subでプログラムが終了するのですが、 End Subが行われると読み込んだデータがメモリから消えてしまいます。 でもButton1.Clickのサブプロシージャですので、 End Subは必須のようで、どのように回避すればいいのか悩んでおります。

関連するQ&A

  • csvファイルの読み込みができません。

    csvファイルの読み込みができません。 過去にExcelで作成したデータをcsvに変換するマクロを作ってもらいました。 (Excel表の中にマクロを登録したボタンがあって、それをクリックするとcsvファイルが作成される) そのcsvファイルをそのまま使用すると、読み込みができますが、一旦csvファイルを開いて一部データの変更をして保存すると読み込みができなくなります。 また、自動にファイル名が設定されるので、わかりやすいようにファイル名を変更しただけでも読み込みができなくなります。 csvファイルにも種類があるんでしょうか?

  • 2つのCSVファイル検索

    CSVファイル2つを検索するシステムを作成したいのですが、ロジックがわかりません。 どのように検索していけば効率的でしょうか、教えてください。 メインCSVファイル  メインID・商品名・説明 詳細CSVファイル  詳細ID・メインID・生産者住所・生産者氏名 で、 メインCSV1データにつき詳細CSVが複数データあります。 検索テキストボックスは1つで、 スペース区切りで複数キーワードが入ります。 検索する項目は、商品名・説明・生産者住所・生産者氏名で、複数キーワードはAND条件です。 説明出来ていますでしょうか? よろしくお願いします。

    • ベストアンサー
    • Perl
  • 配列からのCSVファイルの作成に関して

    環境:vb2005 あるデータをCSVへ出力したいと考えていますが、色んなホームページを検索したところ、 データテーブルからのCSV作成方法は記載がありましたが、配列(二次元配列)からのCSVの 作成方法がわからず悩んでいます。 サンプルとなるようなホームページ等ありましたら教えて頂きたいと思います。 よろしくお願いします。

  • VB2010でCSVファイルを読み、配列に入れる

    ExcelVBAで、フォルダを選択しCSVファイルを表示⇒クリックで対象ファイルを選び配列に入れる次のプログラムを作りました。その後でデータを加工しグラフィック化してるのですが、VBAのグラフィック機能が遅いのでVB2010に変えようと思いいろいろやってみたのですが、どうもうまくいきません。 どなたか、VB2010ではどのようなプログラムになるのか、教えていただけないでしょうか。 'Excel VBA---------------------------------------- Sub CSVデータ() Dim xd(1000),yd(1000) 'フォルダを選ぶ ChDir ThisWorkbook.Path 'CSVファイルの一覧 pname = _ Application.GetOpenFilename(FileFilter:="CSVファイル(*.csv),*.csv" _ , FilterIndex:=1,Title:="開く",MultiSelect:=False) '対象ファイルをクリックで選ぶ If pname <> False Then Workbooks.Open Filename:=pname End If fname = ActiveWorkbook.Name 'CsVファイルのセルから配列へ移す nstart = 6 nend = nstart +500 k = 0 For i = nstart To nend '6行目から500行の2列、3列を読み配列に入れる k = k + 1 xd(k) = Cells(i, 2) yd(k) = Cells(i, 3) Next i End Sub

  • C++でのcsvファイル読み込みについて

    C++でのcsvファイル読み込みについて質問です. 読み込みcsvファイルの規模は300*1000として,その情報をdouble型の2次元配列に格納したいですが,ネットでいろいろ調べたり自分でコードを作ってみてもabort()has been calledなどいくつかエラーが表示されてしまい先に進めません. csvファイル名をa.csv,格納したい2次元配列をA[300][1000]などとしてサンプルコードを提供してくださいますと幸いです. 質問前に散々調べましたがプログラミング初心者でして今現在の力では対応できませんでした.申し訳ありませんが何卒ご教示お願いします.

  • CSVファイルからのデータ検索

    学校の課題なんですが、ここで質問させて下さい。 課題: CSVファイルからのデータ検索ページを作成しなさい。 また、HTMLファイルのフォームから送られてきた文字列を検索の条件に使用し、結果をJSPを使い<table>で出力しなさい。 なお検索結果が  一戸建て,2LDK,東京都  一戸建て,2LDK,埼玉県 であるならば、  一戸建て,2LDK,東京都  -,-,埼玉県 と表示しなさい。 [使用するCSV] 一戸建て,2LDK,東京都 一戸建て,2LDK,埼玉県 一戸建て,3LDK,埼玉県 マンション,3K,北海道 マンション,4K,大阪府 ttp://www.iis.u-tokyo.ac.jp/~susaki/envinfo/jsp_csvfile.html#form_reg ↑を参考にCSVの検索はなんとかなりそうなんですが、検索結果の置換?がよくわからないです。 ご教授お願い致します。。。

  • phpでcsvファイルから二次元配列を作る

    php初心者です。 phpでcsvファイルを読み込んで、 配列[csvの行番号][項目名(csv一行目の内容)]=各々の値 という二次元配列を作りたいのですが、作り方が全く分かりません。 どなたか教えてください。

    • ベストアンサー
    • PHP
  • csvファイルの読込みとソート

    いつも大変参考にさせていただいております。 csvファイルの読み込みとソートをしたく、ネットや過去ログ等を相当調べたのですが、完全に詰まってしまいました。 (検索キーワード:「php csv ソート」「php 二次元配列 ソート」など) とても困っています。どなたかよろしくお願いします。 以下のようなcsvファイルを読み込みソートしたいのです。 ■csvファイル 20110803, A, りんご 20111215, B, みかん 20110306, A, みかん 20110620, A, りんご 20110215, B, りんご ■個別にやりたい処理 (1)、左列の日付で昇順ソートしてすべて表示 (2)、「A」を含む行をすべて表示(日付順) (3)、「A」+「りんご」を含む行をすべて表示(日付順) □補足 csvをfgetcsvで読み込み、テーブルに入れて表示するところまではできました。 csvの行は増えていきます(max100行位)。列は固定。

    • ベストアンサー
    • PHP
  • VB.NETでのCSVファイルの読込

    VB.NETでCSVファイルを1行ずつ読込んで 取得できた値を格納するロジックが分かりません・・・ 申し訳ありませんが、どなたか教えて頂けないでしょうか???

  • CSVファイルを読み込む

    .net VB 2010 初心者です。VB 6.0は、少々分かります。 よろしくお願い致します。 .net VB 2010を使用して、CSVファイルを読み込みたいのです。 列は固定、行は可変です。 配列で、buf(行,列)のように読み込みたいのです。 これだと、10行、3列目と実際とイメージが合致するからです。 これは、どのように実現可能か教えてください。 buf(10,3)ではなく、もっと良い方法があるのであれば、そちらをよろしくお願い致します。 列は、1列目:No.、2列目:フルネーム、3列目:略語、4列目:更新日 となっています。 なので、1行目のフルネームの取り出し、2行目の略語の取り出しでもOKです。 どうぞよろしくお願い致します。

専門家に質問してみよう