多个If&和excel中的标准 - 公式或VBA ......要么就足够了

时间:2015-12-12 07:09:42

标签: excel excel-vba excel-formula vba

我有2张桌子。 表1包含以下字段:

1. Warehouse
2. Test Date0
3. Test Date1
4. Test Date2

1,2,3&的组合4总是独一无二的

表2包含以下字段:

1. Warehouse
2. Link No.
3. Issue date
4. [Pick test Date0] {currently blanks}
5. [Pick test Date1] {currently blanks}
6. [Pick test Date2] {currently blanks}

1,2&的组合3总是独一无二的

需要根据以下条件填充空白的公式:

    Table 1[Warehouse] = Table 2[Warehouse]

    Table 1[Test Date2] < Table 2[Issue Date]

以上标准给出了多个结果。因此输出必须如下: 首先

    Table 1[Warehouse] = Table 2[Warehouse] 

需要处理。 在上面收到的结果子集中发布,需要处理以下内容:

    Table 1[Test Date2] < Table 2[Issue date]

对于此子集,需要处理以下内容:

    min(abs(Table 1[Test Date2]-Table 2[Issue date])).

需要从表1中使用满足上述标准的记录来填充表2中的字段。

Table1 Table2

2 个答案:

答案 0 :(得分:1)

你可以使用没有神奇的公式,只需逐一嵌套Ifs

If A = true then
   If B = true then
      If C = True And D = True then
         'do stuff
      End If
   End If
End If

答案 1 :(得分:1)

使用示例数据布局:

Error enabling openmp - "ld: library not found for -lgomp" and Clang errors

H2中的公式是(你可以向下/向右拖动):

=LOOKUP(0,0/FREQUENCY(0,($F2=$A$2:$A$28)*$G2-B$2:B$28-1)/($F2=$A$2:$A$28),B$2:B$28)

频率通常有助于找到最小距离:

=FREQUENCY(0,array1)

返回二进制数组2:

{0;0;0;0;0;0;0;0;0;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0}

其中1表示array1的最低非负值的位置。 Array2有一个元素而不是array1,当array1的所有元素都是负数时,则array2的最后一个元素= 1。

在这种情况下,array1是:

($F2=$A$2:$A$28)*$G2-B$2:B$28-1

$G2-B$2:B$28-1对所有测试日期&gt; =发布日期均为负数。 ($F2=$A$2:$A$28)*部分将仓库不匹配的元素的发布日期归零。

LOOKUP(0,0/array2,array3)搜索array2的单个非零元素,并返回array3的相应元素。第二个分部/($F2=$A$2:$A$28)用于确保它不会返回位于查找范围之外的值(屏幕截图上的字母abc),当有不配。