数据验证在不同列单元格中的最小值和最大值之间有条件(有或没有vba)

时间:2016-11-08 16:02:48

标签: excel-vba validation conditional excel-2010 vba

在表1中我有鸟翅的最小和最大长度,这对于男性和女性来说是不同的,即变量:

BirdID | WingMMin(平均最小男性长度)| WingMMax(平均最大男性长度)。

在工作表2上我想捕获鸟类的实际测量结果,但是根据工作表1验证(捕获的数据,例如WingLength必须在WingMMin和WingMMax之间,用于使用变量的特定鸟类和性别:

BirdID(不可打字)|性别(1 =男性; 2 =女性进入)| WingLength。

如果没有VBA,这似乎太难了,但由于我不了解VBA,我不知道如何为WingLength列中的所有值编程。逻辑应该如下:

for pos, a in enumerate(rankinglist, 1):
    print(format(pos) +
      format(a.name, '>18') +
      format(str(a.games), '>7') +
      format(str(a.score), '>11'))

1 个答案:

答案 0 :(得分:0)

假设您的工作表结构如下所示:

  

<强> Sheet 1中

A         B         C           D
BirdID    Gender    WingMMin    WingMMax
     

<强> Sheet 2中

A         B         C
BirdID    Gender    WingLength

您可以使用以下公式向Sheet1和Sheet2添加列:

=A1 & "_" & B1

将为每个鸟ID /性别组合提供唯一的字符串。在Sheet1上,此列应位于WingMin / WingMax列之前;我们假设它是第三列。

  

<强> Sheet 1中

A         B         C           D           E
BirdID    Gender    UniqueID    WingMMin    WingMMax
     

<强> Sheet 2中

A         B         C             D
BirdID    Gender    WingLength    UniqueID

然后,您可以使用VLOOKUP工作表函数来确定特定行是否有效:

=AND(C2 >= VLOOKUP(D2, Sheet1!$C$1:$E$100, 2, FALSE), C2 <= VLOOKUP(D2, Sheet1!$C$1:$E$100, 3, FALSE)

如果值有效,则此函数将返回TRUE;如果值无效,则返回FALSE。

您可以将此公式放在其他列中,也可以根据公式应用条件格式。