過去ログなどいろいろと調べてみましたが、解決できないので、相談させていただきます。
Excelに次のようなデータがあります。
| A B C
------------
1| a 1 D
2| b 2 E
3| a 1 F
4| b 2 E
5| a 3 D
6| a 1 D
データは1万行ぐらいです。
このデータから、まずC列でDだけを対象にして、A列のユニークデータをリストボックスに表示させ、aが選択されたときに、次のリストボックスに1と3を表示するということをしたいのです。
この様な場合、どういった方法があるのでしょうか?
過去ログなどでは、1次元配列ではリストボックスを使った方法などいくつか拝見したのですが、2次元配列では見つけることができませんでした。
まずは環境から書くことから
初めてみませんか?
どういった方法がありますかと聞いてますが自分が書いた方法をそのままコーディングすればよいと思いますその上で詰まったことを質問されては?
意味不明
>A列のユニークデータ
ユニークになってないし・・
>aが選択されたときに、次のリストボックスに1と3を表示するということをしたいのです。
C列の話はどこいった?
ななしさん、あんさんのご指摘の通り意味不明で、申し訳ありません。
環境は、VB6です。
C列が第一条件で、その次にA列、B列という順で絞り込んで行きたいのです。
質問の意味がさっぱりわからんのは俺だけなのか?
>aが選択されたときに、次のリストボックスに1と3を表示する
ここですでにワケワカなんだが
ユニークデータを重複なしと解釈して翻訳すると、
1、C列の値を選択する。
2、選択されたC列と同じ値をC列に持つ行の、A列の値を重複無しにリストボックスに入れる。
4、リストボックスからA列の値を選択する。
3、リストボックスで選択された値と同じ値をA列に持つ行の、B列の値を重複無しにリストボックスに入れる。
こんなかな。
ボクの場合、
>データは1万行ぐらいです。
の時点でデータベースにデータを格納して使う事にするので、
データベースを使わない(Excel にデータが書かれている)なら、
パフォーマンスとか、使用するメモリ量とかの条件は無視する
とします。その辺を考慮に入れないで、
こんな方法もあります↓
[ADODB.Recordset を使ったデータの操作]
http://www.microsoft.com/japan/msdn/library/ja/jpdnofftalk/htm/office02032000.asp
…サンプルではデータベースを利用してデータを読み込んでますが、
メモリ上にレコードセットを自分で用意して、読み込んだデータを
全て自分で格納すれば、後の操作(検索、並べ替え、フィルタ処理)は
同じ操作でできます。500行くらいのデータなら問題ない事は確認して
ます。データ量を増やした時に起こる問題については保証しません。
返事が遅くなってしまい、すみません。
我龍院忠太さんの説明頂いた通りの動作をさせたいと思っています。
ユニークではなく、重複なしというのが正しい表現ですね。
なかなか我龍院忠太さんの様な説明ってできないものですね。
今後参考にさせて頂きます。ありがとうございました。
特攻隊長まるるうさん、リンクありがとうございます。
リンクからいろいろと辿って、情報を得ることができました。
現時点では、ADOでExcelデータをメモリ上のレコードセットに格納するところまで動作するようになりました。
特攻隊長まるるうさんの
>>データは1万行ぐらいです。
>の時点でデータベースにデータを格納して使う事にする
という方法を試してみて、スピードの差などを比較していきたいと思います。
その他、特攻隊長まるるうさんのコメントされてる
http://madia.world.coocan.jp/cgi-bin/VBBBS2/wwwlng.cgi?print+200408/04080071.txt
なんども参考にさせて頂きました。
みなさん、ありがとうございました。
ツイート | ![]() |