我在Excel中有两张纸,一张是订单,另一张是基于订单的生产单。
我正在使用VLOOKUP查询订单,以查询订购商品的数量。
但是,有时这个数量会在订单上突出显示,表明相关商品实际上会产生2个额外的金额(免费样品)。
例如,在生产形式中我有:
ITEM|QUANTITY TO PRODUCE
在订单中我有:
ITEM|QUANTITY TO ORDER
我使用VLOOKUP来获得匹配,这是有效的,但如果QUANTITY TO ORDER
中的单元格突出显示为黄色,那么我需要将VLOOKUP值添加为2。
我该怎么做?有没有办法在没有宏的情况下自动执行此操作?我的客户不想手动激活东西,他们只希望工作表能够正常工作。
谢谢。
答案 0 :(得分:1)
VLOOKUP无法做到这一点。您需要做的是将单元格的背景颜色视为数据......单元格的背景颜色不是数据。
但...... this link explains how to do that 以及其含义是什么。
创建一个名为BackColor
的工作簿范围名称( Ctrl + F3 ),引用=GET.CELL(63,OFFSET(INDIRECT("RC",FALSE),0,-1))
,然后立即向该列添加一列用户突出显示单元格的列右侧,并使该列具有=BackColor<>0
等公式,以使其包含TRUE
列中任何突出显示的单元格左
将额外2个单位硬编码到公式中对维护不友好,因此在某个单元格中输入2
并为其定义名为ExtraUnits
的名称。
然后将公式修改为
=[the original VLOOKUP]+IF([lookup the BackColor Boolean], ExtraUnits, 0)
对于所有突出显示的单元格,这将向查找单位添加ExtraUnits
。
唯一的缺点是,如上所述,就Excel而言,单元格的背景颜色不是数据,因此您的用户必须触发重新计算 - 只更改单元格的背景颜色不会这样做,而是按下 F9 会。
答案 1 :(得分:1)
以下代码位于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
使用该功能:
=IF(CELLCORINDEX(A1,FALSE)>0,1,0)
这可以让您检查单元格或文本的颜色。但您需要使用此处http://www.mrexcel.com/forum/excel-questions/447723-vlookup-returns-cell-address.html中的索引匹配代码才能进行匹配。
此外,与上述答案一样,突出显示一个单元格并不算作数据更改,因此即使您可以在没有宏的情况下获取此信息,如果有人更新了单元格的突出显示状态,除非自动,否则不会使用此公式更新单元格。
听起来你可能需要重新考虑突出显示是+2样本的触发器。我的上述答案建议添加一列可能是真/假或是/否,检查是否有样品。
答案 2 :(得分:0)
我做的是:
我创建了一个用户定义的函数:
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
添加到原始版本,然后我添加了两个。 :)