1

現時点では少し立ち往生しています。データの配列に取り組んでおり、列番号を数式に入力する方法を見つける必要があります。

-一致関数を使用して、値に対応する列番号を見つけました。
元。"XYZ" は と一致しColumn 3ます。これは次と同等ですC1:Cxxxxxx

-数式にを入力して特定の列のデータを取得するために、このワークブックを将来使用する予定があり、計算を実行するために必要な列が必要な場合とそうでない場合があるためC1:Cxxxxxx、パーツを直接参照できるようにしたいと考えています。Column 3次回使用するときは列3になります。
- Excel に数式を使用して、数式に使用する列を Excel に指示する方法はありますか?

もう少し詳しく説明すると、次の方程式があります

=AND(Sheet3!$C$1:$C$250000=$A$4,Sheet3!$B$1:$B$250000=$B$4)

列Cを使用するように指定する代わりに、式を使用してCを使用するように指示する方法はありますか?

編集: 追加情報; 「私は基本的に、foo と bar が true である SQL where ステートメントに相当するものを実行しています。foo と bar が true であるすべての baz 値の連結リストを Excel に吐き出させたいと考えています。理想的には、次の baz 値のみを返すようにしたいと考えています。私が得た方法では、式はすべての行を個別にテストして true かどうかを確認します.18K 行がある場合は、18K の個別のテストがあります..動作しますが、そうではありませんきれいすぎる. 目標は、可能な限り自動化することです. *新しいデータ配列を追加するたびに、列参照を変更する必要はありません*y"

ありがとう

4

2 に答える 2

1

ADDRESSを使用してテキストを生成できますINDIRECTが、式に範囲ではなく文字列を渡すときに使用する必要があります

=AND(INDIRECT(ADDRESS(1,3,,,"Sheet3") & ":" & ADDRESS(250000,3))=$A$4 ,INDIRECT(ADDRESS(1,2,,,"Sheet3") & ":" & ADDRESS(250000,2))=$B$4)

明らかに、ADDRESS数式の 3 と 2 をMATCH、列番号を取得するために使用した関数に置き換えます。上記は、 $B$1:$B$25000 の列も `MATCH' を使用して見つかったと想定しています。それ以外の場合は、次のようになります。

=AND(INDIRECT(ADDRESS(1,3,,,"Sheet3") & ":" & ADDRESS(250000,3))=$A$4 ,Sheet3!$B$1:$B$25000=$B$4)

次の点に注意してください。

  1. 最初の部分で「Sheet3」のみを使用する必要がありますINDRECT
  2. 式の条件 3 と 4 はADDRESSデフォルトのままです。これは、絶対 ($C$1) 参照を返し、R1C1 ではなく A1 スタイルであることを意味します。

編集

追加情報を考えると、おそらく高度なフィルターを使用すると、必要なものに近づくことができます. ここに良いチュートリアルがあります。チュートリアルに従って設定し、慣れてから、基本的なコードを使用して、新しいデータセットにドロップしたときに自動的に設定できます。

データセットに貼り付け、VBA を使用してデータセットが使用する範囲を取得し、次のようなフィルターを適用します。

Range("A6:F480").AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:= _ Sheets("Sheet1").Range("A1:B3"), Unique:=False

結果を新しいテーブルにコピーすることもできますが、これは元のデータと同じシートにある必要があります。私の提案は、左側の非表示の列にデータを貼り付け、表示されている列の行 1:5 に条件用のスペースを配置してから、データの使用範囲を取得し、フィルターを適用して下のデータをコピーするボタンを用意することです。基準:

Range("A6:F480").AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Sheets _ Range("H1:M3"), CopyToRange:=Range("H6"), Unique:=False

ボタンは最初に宛先セルをクリアする必要があります。非表示の列が十分にあることを確認するなど、すべて可能です。お役に立てれば。

于 2013-11-14T00:58:31.197 に答える