
我试图根据第1-6行对列A( Ys)进行着色。我想要它,所以如果它是绿色和红色变成黄色,只是绿色变成绿色,只是红色变成红色。这张图显示了我想要什么的基本想法。
我不知道任何宽容的格式公式,这可能使这成为可能。我在VBA的信息上搜索了这个网站,并试图学习它。如果你能解决这个问题,请你解释每一步,以便我能更好地理解它,为未来。
发布于 2022-11-07 06:16:24
有趣的是,有一种方法可以用条件格式来实现,但这使用了一个鲜为人知的技巧:GET.CELL函数(更多信息)。
此函数不能在单元格中使用,但可以在命名范围内使用,因此,其思想是创建一个命名范围,给它一个类似于"BackgroundColorIndex“的名称,并按如下方式定义它:
=GET.CELL(63,INDIRECT("rc",FALSE))

然后,您可以创建一个名为"Color“的工作表,在其中定义您的颜色:

其中,每个索引都是使用BackgroundColorIndex函数确定的。

然后,我建议为每种颜色(GreenIndex、YellowIndex和RedIndex)创建命名范围,以便稍后我们可以参考它们。
现在,我们需要创建另一个版本的BackgroundColorIndex,但是它不会引用单元格本身,它将始终引用包含数据的工作表中的相应单元格。
让我们用以下定义将其命名为BackgroundColorIndexSheet1:
=GET.CELL(63,INDIRECT("Sheet1!rc",FALSE))(请注意,您需要将"Sheet1“替换为工作表的名称。)

然后,您将创建一个新的工作表。我们叫它"Sheet2“吧。这将是我们计算的地方。
它表示,工作表、A列和标头将与Sheet1相同,但里面的公式将是=BackgroundColorIndexSheet1
例如,在我的例子中,我有以下值。

然后,我们可以添加几个助手列,如下所示:

公式:
=SUMIF(B2:G2,">0")/MAX(COUNTIF(B2:G2,">0"),1)=IF(J2=GreenIndex,GreenIndex,0)=IF(J2=Redindex,RedIndex,0)=IF(SUM(K2:L2)>0,SUM(K2:L2),IF(J2>0,YellowIndex,0))现在,我们可以在条件格式规则中使用输出列中的值。例如:

其结果将是:

当值发生变化时,您需要按F9刷新计算。您需要将工作簿保存为.xlsm,因为我们使用的是GET.CELL
https://stackoverflow.com/questions/74340816
复制相似问题