0

複数の条件に一致する行をテーブル全体で検索できるようにする必要があります。データを .csv ファイル形式で出力するプログラムを使用します。データのセットを分離する行があり、これらのヘッダーのそれぞれに固有の列はありませんが、テーブルで複数の値を検索すると、各ヘッダー行を特定できるはずです。Application.WorksheetFunction.Match を使用して単一の基準で行を返すことができることはわかっていますが、2 つの 3 つまたは 4 つの基準で検索する必要があります。

擬似コードでは、次のようになります。

Return row number were column A = bill & column B = Woods & column C = some other data
4

3 に答える 3

1

配列を操作する必要があります。

配列には次の 2 種類があります。

    numeric {1,0,1,1,1,0,0,1}
    boolean {TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE}

それらの間で変換するには、次を使用できます。

    MATCH function
    MATCH(1,{1,0,1,1,1,0,0,1},0)  -> will result {TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE}

    simple multiplication
    {TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE}*{TRUE,FALSE,TRUE,TRUE,TRUE,FALSE,FALSE,TRUE} -> will result {1,0,1,1,1,0,0,1}

次の図のように配列を入力して、match 関数で配列を確認できます。MATCH 関数は配列を「OR」関数として扱うことに注意してください (1 つの一致は true になります。つまり:

    MATCH(1,{1,0,1,1,1,0,0,1},0)=TRUE
    , YOU MUST CTR+SHIFT+ENTER !!! FOR IT TO GIVE AN ARRAY BACK!!!

以下の例では、ケースごとに管理者を除くすべての従業員の時間を合計したいことを示しています

2 つのオプションがあります。長い単純な方法と、複雑で高速な方法です。

    long simple way
    D2=SUMPRODUCT(C2:C9,(A2=A2:A9)*("admin"<>B2:B9)) <<- SUMPRODUCT makes a multiplication

基本的に A1={2,3,11,3,2,4,5,6}*{0,1,1,0,0,0,0,0} (SUMPRODUCT の右側の数値配列でなければなりません!!!) すなわち: A1=2*0+3*1+11*1+3*0+2*0+4*0+5*0+6*0

セルをドラッグして残りのセルをオートコンプリートすると、D9=SUMPRODUCT(C9:C16,(A9=A9:A16)*("admin"< >B9:B16))、テーブルがあり、異なる順序で結果を表示したい場合、上記と同じ範囲外です

    the fast complicated way
    D3=SUMPRODUCT(INDIRECT("c2:c9"),(A3=INDIRECT("a2:a9"))*("admin"<>INDIRECT("b2:b9")))

それは同じですが、オートコンプリートまたはテーブルの並べ替え時に変更したくないセルで INDIRECT が使用されたことを除いて、INDIRECT は時々 VOLATILE ERROR を与えることが警告されます。単一のセルで使用しないこと、または配列で一度だけ使用することをお勧めします

f* c* 写真を投稿できません :( 表は:

    case    emplyee hours   totalHoursPerCaseWithoutAdmin
    1   admin   2   14
    1   him 3   14
    1   her 11  14
    2   him 3   5
    2   her 2   5
    3   you 4   10
    3   admin   5   10
    3   her 6   10

配列をチェックする関数については、関数の挿入ボタン (および fx のように見えます) を開き、MATCH をダブルクリックします。次に、Lookup_array 内に A2=A2:A9 のような値を入力すると、この例では {TRUE,TRUE が返されます。 ,TRUE,FALSE,FALSE,FALSE,FALSE,FALSE} これは、最初の 3 行のみが case=1 からのものであるためです

于 2013-09-24T10:15:10.500 に答える
0

このようなもの?

A1:C20 にデータを入力するとします。

Aで「ビル」、で「ウッズ」、Bで「その他のデータ」を探していますC

適宜変更

=IF(INDEX(A1:A20,MATCH("ビル",A1:A20,0),1)="ビル",IF(INDEX(B1:B20,MATCH("森",B1:B20,0), 1)="ウッズ",IF(INDEX(C1:C20,MATCH("その他のデータ",C1:C20,0),1)="その他のデータ",MATCH("ビル",A1:A20,0 )、"見つかりません")))

スナップショット

ここに画像の説明を入力

于 2012-05-21T20:23:01.967 に答える
0

この array* 数式を使用します (3 つの基準に対して):

=MATCH(1,((Range1=Criterion1)*(Range2=Criterion2)*(Range3=Criterion3)),0)

*コミットするCtrl+Shift+Enter

于 2012-05-21T22:59:56.120 に答える