1

このタスクを完了するためのより簡単な方法はありますか?

リストで値と日付を検索し、元の日付と一致するか、元の日付から5日以内の場合は日付を返したい。

これまで私がこれを行うことができた唯一の方法は、ヘルパーキー(A1)を作成し、ヘルパーキーリスト(F:F)でヘルパーキーを検索し、IFERRORを追加して再度検索することです。ただし、1などを追加します。

例:

    A           B           C           D
1   table1_ky   table1_id   table1_dt   vlookup
2   99941275    999         1/1/2013    1/3/2013


    G           H           I
1   table2_ky   table2_id   table2_dt
2   99941277    999         1/3/2013

D2の式:

= IFERROR(VLOOKUP(TEXT(A2,0)、F:H、3,0)、IFERROR(VLOOKUP(TEXT(A2 + 1,0)、F:H、3,0)、IFERROR(VLOOKUP(TEXT(A2 +2,0)、F:H、3,0)、 "no")))

最大30個のIFERRORステートメントを使用せずに、日付範囲を5、10、30などに変更できるように、「+1」の数を可変にできるようにしたい。

このようなことを行うことができるExcelの関数はありますか?

可能であればVBAの使用は避けたいと思います。

4

1 に答える 1

3

このようなLOOKUP式を使用できます

=IFERROR(LOOKUP(2,1/(G$2:G$100=B2)/(H$2:H$100>=C2)/(H$2:H$100<=C2+5),H$2:H$100),"no")

これにより、C2とC2 + 5の間にあり、列Gの値も一致するH2:H100の最後の日付が見つかります。「連結された」ヘルパー列は必要なく、5を任意の値に調整できます。

「最後」とは、位置を意味します。複数の一致がある場合に最も早い日付が必要な場合(現在の数式が行うことです)、次のような「配列数式」に切り替えます。

=IFERROR(SMALL(IF((G$2:G$100=B2)*(H$2:H$100>=C2)*(H$2:H$100<=C2+5),H$2:H$100),1),"no")

CTRL++SHIFTで確認ENTER

于 2013-03-21T22:06:05.287 に答える