Excel如果单元格在VLOOKUP上突出显示
我在Excel中有两张表,一张是订单,另一张是基于订单的生产表。
我正在使用VLOOKUP来查询定购给定项目的数量的订单。
然而,有时这个数量在订单上突出显示,表明所讨论的项目实际上产生了2额外的数额(免费样品)。
所以,例如,在我的生产forms中:
ITEM|QUANTITY TO PRODUCE
在订单中我有:
ITEM|QUANTITY TO ORDER
我使用VLOOKUP来获得匹配,这是有效的,但是如果QUANTITY TO ORDER
的单元格高亮显示为黄色,那么我需要将VLOOKUP值加2。
我怎样才能做到这一点? 有没有办法自动做到这一点,没有macros? 我的客户不想手动激活,他们只是希望工作表。
谢谢。
VLOOKUP无法做到这一点。 你需要做的是将一个单元格的背景色当作数据来处理,而一个单元格的背景色不是数据 。
但是… 这个链接解释了如何做到这一点,以及其含义。
创build一个名为BackColor
的工作簿范围名称( Ctrl + F3 ),引用=GET.CELL(63,OFFSET(INDIRECT("RC",FALSE),0,-1))
,然后立即向右侧添加一列用户突出显示单元格的列,并使该列具有一个公式,例如=BackColor<>0
以便在其左侧列中任何突出显示的单元格中包含TRUE
。
将额外的2个单元硬编码到公式中不会对维护有帮助,因此请在某个单元格中input2
,并ExtraUnits
定义名为ExtraUnits
的名称。
然后修改你的公式
=[the original VLOOKUP]+IF([lookup the BackColor Boolean], ExtraUnits, 0)
这会将ExtraUnits
添加到查找的单位,对于所有突出显示的单元格。
唯一的缺点是,正如我上面所说的,单元格的背景颜色不像Excel那样是数据,所以你的用户必须触发一个重新计算 – 只是改变单元格的背景颜色不会这样做,但是按F9会。
下面的代码在http://www.mrexcel.com/forum/excel-questions/215415-formula-check-if-cell-highlighted.html
Function CellColorIndex(InRange As Range, Optional _ OfText As Boolean = False) As Integer ' ' This function returns the ColorIndex value of a the Interior ' (background) of a cell, or, if OfText is true, of the Font in the cell. ' Application.Volatile True If OfText = True Then CellColorIndex = InRange(1,1).Font.ColorIndex Else CellColorIndex = InRange(1,1).Interior.ColorIndex End If End Function
要使用该function:
=IF(CELLCORINDEX(A1,FALSE)>0,1,0)
这使您可以检查单元格的颜色或文本。 但是您需要使用http://www.mrexcel.com/forum/excel-questions/447723-vlookup-returns-cell-address.html中的索引匹配代码来匹配它。
此外,像上面的答案状态一样,突出显示单元格不会被视为数据更改,因此,即使您可以在不使用macros的情况下获取此信息,如果有人更新了单元格的突出显示状态,也不会使用此公式更新单元格,除非自动。
听起来像你可能需要重新考虑突出显示是+2样本的触发器。 我与上面的答案,build议添加一个列可能是真/假或是/否检查,看看他们是否得到样品。
我做的是这样的:
我创build了一个用户定义的函数:
Function getRGB3(rcell As Range, Optional opt As Integer) As Long Dim C As Long Dim R As Long Dim G As Long Dim B As Long C = rcell.Interior.Color R = C Mod 256 G = C \ 256 Mod 256 B = C \ 65536 Mod 256 If opt = 1 Then getRGB3 = R ElseIf opt = 2 Then getRGB3 = G ElseIf opt = 3 Then If B <> 0 Then B = -2 End If getRGB3 = B + 2 Else getRGB3 = C End If End Function
这使得所有高亮显示的单元格(黄色)在被引用时都得到了2的值,所以在订单上它就像ITEM|QUANTITY TO ORDER|CUSTOM FUNCTION VALUE|
第三列(自定义函数)为每个对应的黄色单元格旁边的2,如果不是,它只是零。
然后,我做第二个VLOOKUP将CUSTOM FUNCTION VALUE
添加到原来的,然后我添加了两个。 🙂