我是VBA的初学者,如果有人可以帮助我解决这个问题,我将非常感激。
我正在工作的工作表中有3列R,SF和DF,其中性能百分比记录每个变量中的每个变量(R,SF,DF)。
如果百分比大于90,则该变量分类为严重。如果百分比大于或等于80且小于90,则该变量分类为“注意”。最后,如果该变量大于或等于60且小于80,则该变量被分类为Trigger。
我想通过比较每个变量的3个百分比并取最大值来自动填充另一列。例如,如果最大值是变量R,则该另一列中的单元格将填充R及其各自的分类,(C-严重或A-注意或T-触发)。为了说明这种情况:
考虑两个公式:
=SWITCH(MATCH(MAX(B2:D2),B2:D2,0), 1, "R", 2, "SF", 3, "DF")
IF(MAX(B2:D2)>=90,"C",IF(MAX(B2:D2)>=80,"A",IF(MAX(B2:D2)>-60,"T","")))
第一个公式将为您提供具有最大值的列的列索引(基于输入范围)。然后,您可以使用SWITCH
将列索引转换为给定的输出。在这里,我们将以下Column Index:Output
转换为1:R
,2:SF
和3:DF
第二个公式将只对每个IF
语句进行一次求值。一旦满足您的条件,该公式的其余部分将不进行评估,因此您只需要检查Greater Than
,而不需要按照您的说明检查In Between
。
如果要在一个单元格中输出,则只需用&
合并公式,如下所示。我还分享了我使用的设置的照片,因此您可以将公式与范围相关
A1 = SWITCH(MATCH(MAX(B2:D2),B2:D2,0), 1, "R", 2, "SF", 3, "DF") & IF(MAX(B2:D2)>=90,"C",IF(MAX(B2:D2)>=80,"A",IF(MAX(B2:D2)>-60,"T","")))