2

数百のワークシートを含むワークブックがあり、それぞれが同じようにレイアウトされています (つまり、同じ列を持っています)。ただし、データの行数はさまざまです。

各シートの各行を循環させたいのですが、特定の列 (列 "L") の値が特定の値 (この場合は文字列) である場合、その行を新しいワークシートにコピーしたいと思います。最後に、列「L」に特定の指定された値を持つ大きなワークブックに存在するすべての行を持つ1つの大きなワークシートがあります。

結果をコピーしているシートを循環させたくありません。おそらく、別のワークブックからこれを行う必要がありますか?

前もって感謝します。

応答:

したがって、ファイルとコードは私のオフィスにありますが、これが 1 つのワークシートにある場合、行を調べて対応するフィールドの一部またはすべてを返すいくつかの方法を知っています。私が抱えている問題は、(a)さまざまな行数の異なるワークシートを循環するように設定すること、(b)すでに書かれているものを上書きせずに新しいワークシートに戻すことです。全体として非常に大きなワークシートであるため、誰かが ADO​​ を使用したソリューションを持っている場合、それも歓迎されます。重ねてお礼申し上げます。大規模で不明確な質問をした場合は、お詫び申し上げます。

4

1 に答える 1

0

あなたの質問はむしろコードなしで意見を求めるテキストベースなので、私はあなたに私の意見を述べ、この答えを通して見つけます-十分に公平です:)

私のコメントによると、

したがって、data book別の本から検索を行いたい場合は、このバグを考えると、それがより良いアイデアです: ActiveX データ オブジェクト (ADO) を使用して、開いている Excel ワークシートをクエリすると、メモリ リークが発生します。

そのようにdata bookして、データベース自体を扱い、Excel シートからクエリを実行します。そうしても、データセットとして検討している検索可能な各シートが同様の構造を持っていることを確認したい場合があります。サンプルデータを提供していただければ、暗闇でターゲットに石を投げ続けるよりもはるかに優れています... ;) 行の検索について言及しました。シートごとに 1 列の行を検索していますか? その場合、検索可能なすべてのシートにこの列が含まれていますか?

したがって、検索/スキャンする行については、Microsoft が次のように述べていることに注意してください。

「スキャンする行: Excel は、リレーショナル データベースのように、含まれるデータに関する詳細なスキーマ情報を ADO に提供しませんしたがって、ドライバーは、知識に基づいた推測を行うために、既存のデータの少なくとも数行をスキャンする必要があります。各列のデータ型. "Rows to Scan" のデフォルトは 8 行です. 1 行から 16 行までの整数値を指定するか、ゼロ (0) を指定してスキャンすることができます.すべての既存の行. これは、オプションの MaxScanRows= 設定を接続文字列に追加するか、DSN 構成ダイアログ ボックスで [スキャンする行] 設定を変更することによって行われます。

ただし、ODBC ドライバーのバグにより、現在、[スキャンする行数 (MaxScanRows)] 設定を指定しても効果がありません。つまり、Excel ODBC ドライバー (MDAC 2.1 以降) は、各列のデータ型を判別するために、指定されたデータ ソースの最初の 8 行を常にスキャンします。"

さらに、検索可能な行にデータ型が混在している場合は、大きな危険にさらされます。マイクロソフトもその側面について語っています。

VBA Binary Searchしたがって、上記のプロセスでは多くの予防措置を講じることができますが、aや aよりも高速です.Find。ただし、アプローチを取りたくないADO場合は、思いついたデザインを提供することができます。それについても喜んで提案します。:)

于 2012-12-11T05:48:57.033 に答える