1

これは、私の 2 つのテーブルの簡易版です。

ここに画像の説明を入力

その測定とタイプ のTable1の値と隣接する測定値の最も近い一致に基づいて、Table2の欠損値を埋めることができる必要があります。

たとえば、行 18 では、セルB18 [4.3] とセルB3およびB11の最も近い一致を検索し(タイプ A のレコードはこれら 2 つだけであるため)、最も近い一致の隣接する測定値2をセルC18に返す必要があります。 . または、行 19 で、セルC6:C8内のセルC19 [2.3]の最も近い一致を検索し、隣接する測定値1をセルB19に返す必要があります。

4

2 に答える 2

3

次のように、テーブル 2 を少し異なる方法で設定します。

インデックス一致の最も近い値

セル D18の配列数式を下にコピーすると、次のようになります。

=INDEX(IF(B18=$B$2,$C$3:$C$12,$B$3:$B$12),MATCH(MIN(IF($A$3:$A$12=A18,ABS(IF(B18=$B$2,$B$3:$B$12,$C$3:$C$12)-C18))),IF($A$3:$A$12=A18,ABS(IF(B18=$B$2,$B$3:$B$12,$C$3:$C$12)-C18)),0))

配列数式を確認するには、EnterではなくCtrl+Shift+Enterを使用する必要があります。

于 2013-09-04T17:34:26.407 に答える
2

わかりました、さらに単純化できるかどうかはわかりません (式で 2 回行われる計算がいくつかあります) が、セル C18 に対して次のように思いつきました。

=INDEX(C$3:C$12,MATCH(9^99,IF(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18))=MIN(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18))),C$3:C$12)))

セル B19 の場合:

=INDEX(B$3:B$12,MATCH(9^99,IF(IF($A$3:$A$12=$A19,ABS($C$3:$C$12-$C19))=MIN(IF($A$3:$A$12=$A19,ABS($C$3:$C$12-$C19),999)),B$3:B$12)))

EDIT2 : barryhoudini が指摘したように、彼の数式が修正された間違いがありました。上記の2つの式を編集しました。それ以外の場合は、彼が正しく述べたように、C18 にも次の式を使用できます。

=LOOKUP(9^99,IF(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18))=MIN(IF($A$3:$A$12=$A18‌​,ABS($B$3:$B$12-$B18))),C$3:C$12))

ノート:

  1. これらは配列数式であり、 のみではなく ++ でのみCtrl機能しShiftます。EnterEnter

  2. この数式は、テーブル内の最後の一致を取得します。この場合、測定値 1 が 4.3 の A の場合、同じ差がある場合は 2.8 が返されます。

EDIT1:わかりました、一貫性を保つために、B19で常により高い一致を取得するためにこれを思いつきました:

EDIT3: /のLOOKUP代わりに少し短い式を使用し、最初の列の問題も修正しました。INDEXMATCH

=LOOKUP(9^99,IF(MAX(IF(ABS($C$3:$C$12-$C19)=MIN(IF($A$3:$A$12=$A19,ABS($C$3:$C$12-$C19),999)),C$3:C$12))=IF(IF($A$3:$A$12=$A19,ABS($C$3:$C$12-$C19))=MIN(IF($A$3:$A$12=$A19,ABS($C$3:$C$12-$C19),999)),C$3:C$12),IF(ABS($C$3:$C$12-$C19)=MIN(IF($A$3:$A$12=$A19,ABS($C$3:$C$12-$C19),999)),B$3:B$12)))

そしてこれはC18用です:

=LOOKUP(9^99,IF(MAX(IF(ABS($B$3:$B$12-$B18)=MIN(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18),999)),B$3:B$12))=IF(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18))=MIN(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18),999)),B$3:B$12),IF(ABS($B$3:$B$12-$B18)=MIN(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18),999)),C$3:C$12)))

下位一致の場合、B19:

=LOOKUP(9^99,IF(MIN(IF(ABS($C$3:$C$12-$C19)=MIN(IF($A$3:$A$12=$A19,ABS($C$3:$C$12-$C19),999)),C$3:C$12))=IF(IF($A$3:$A$12=$A19,ABS($C$3:$C$12-$C19))=MIN(IF($A$3:$A$12=$A19,ABS($C$3:$C$12-$C19),999)),C$3:C$12),IF(ABS($C$3:$C$12-$C19)=MIN(IF($A$3:$A$12=$A19,ABS($C$3:$C$12-$C19),999)),B$3:B$12)))

C18 の場合:

=LOOKUP(9^99,IF(MIN(IF(ABS($B$3:$B$12-$B18)=MIN(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18),999)),B$3:B$12))=IF(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18))=MIN(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18),999)),B$3:B$12),IF(ABS($B$3:$B$12-$B18)=MIN(IF($A$3:$A$12=$A18,ABS($B$3:$B$12-$B18),999)),C$3:C$12)))

EDIT4: 2 つのタイプの場合:

=LOOKUP(9^99,IF(MAX(IF(ABS($C$3:$C$12-$C19)=MIN(IF(($A$3:$A$12=$A19)*($D$3:$D$12=$D19),ABS($C$3:$C$12-$C19),999)),C$3:C$12))=IF(IF(($A$3:$A$12=$A19)*($D$3:$D$12=$D19),ABS($C$3:$C$12-$C19))=MIN(IF(($A$3:$A$12=$A19)*($D$3:$D$12=$D19),ABS($C$3:$C$12-$C19),999)),C$3:C$12),IF(ABS($C$3:$C$12-$C19)=MIN(IF(($A$3:$A$12=$A19)*($D$3:$D$12=$D19),ABS($C$3:$C$12-$C19),999)),B$3:B$12)))

そしてこれはC18用です:

=LOOKUP(9^99,IF(MAX(IF(ABS($B$3:$B$12-$B18)=MIN(IF(($A$3:$A$12=$A18)*($D$3:$D$12=$D18),ABS($B$3:$B$12-$B18),999)),B$3:B$12))=IF(IF(($A$3:$A$12=$A18)*($D$3:$D$12=$D18),ABS($B$3:$B$12-$B18))=MIN(IF(($A$3:$A$12=$A18)*($D$3:$D$12=$D18),ABS($B$3:$B$12-$B18),999)),B$3:B$12),IF(ABS($B$3:$B$12-$B18)=MIN(IF(($A$3:$A$12=$A18)*($D$3:$D$12=$D18),ABS($B$3:$B$12-$B18),999)),C$3:C$12)))

下位一致の場合、B19:

=LOOKUP(9^99,IF(MIN(IF(ABS($C$3:$C$12-$C19)=MIN(IF(($A$3:$A$12=$A19)*($D$3:$D$12=$D19),ABS($C$3:$C$12-$C19),999)),C$3:C$12))=IF(IF(($A$3:$A$12=$A19)*($D$3:$D$12=$D19),ABS($C$3:$C$12-$C19))=MIN(IF(($A$3:$A$12=$A19)*($D$3:$D$12=$D19),ABS($C$3:$C$12-$C19),999)),C$3:C$12),IF(ABS($C$3:$C$12-$C19)=MIN(IF(($A$3:$A$12=$A19)*($D$3:$D$12=$D19),ABS($C$3:$C$12-$C19),999)),B$3:B$12)))

C18 の場合:

=LOOKUP(9^99,IF(MIN(IF(ABS($B$3:$B$12-$B18)=MIN(IF(($A$3:$A$12=$A18)*($D$3:$D$12=$D18),ABS($B$3:$B$12-$B18),999)),B$3:B$12))=IF(IF(($A$3:$A$12=$A18)*($D$3:$D$12=$D18),ABS($B$3:$B$12-$B18))=MIN(IF(($A$3:$A$12=$A18)*($D$3:$D$12=$D18),ABS($B$3:$B$12-$B18),999)),B$3:B$12),IF(ABS($B$3:$B$12-$B18)=MIN(IF(($A$3:$A$12=$A18)*($D$3:$D$12=$D18),ABS($B$3:$B$12-$B18),999)),C$3:C$12)))
于 2013-09-04T17:33:50.937 に答える