Excel如果在VLOOKUP上突出显示单元格

时间:2015-06-21 04:04:47

标签: excel vba excel-vba

我在Excel中有两张纸,一张是订单,另一张是基于订单的生产单。

我正在使用VLOOKUP查询订单,以查询订购商品的数量。

但是,有时这个数量会在订单上突出显示,表明相关商品实际上会产生2个额外的金额(免费样品)。

例如,在生产形式中我有:

ITEM|QUANTITY TO PRODUCE

在订单中我有:

ITEM|QUANTITY TO ORDER

我使用VLOOKUP来获得匹配,这是有效的,但如果QUANTITY TO ORDER中的单元格突出显示为黄色,那么我需要将VLOOKUP值添加为2。

我该怎么做?有没有办法在没有宏的情况下自动执行此操作?我的客户不想手动激活东西,他们只希望工作表能够正常工作。

谢谢。

3 个答案:

答案 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添加到原始版本,然后我添加了两个。 :)