搜索哪个单元格包含特定文本并修改偏移单元格

时间:2017-01-23 15:58:03

标签: excel vba excel-vba excel-formula

我正在寻找以下问题的解决方案,目前无法解决:

在Sheet1中,我有产品订单。 A列是产品代码,B列是订购数量。

在Sheet2中,客户选择了几个变量,这些变量以所选变量的连接标签结尾,例如:A1 - 客户可以从a,b或c中选择(通过下拉菜单进行值验证),A2 - 客户可以选择1,2或3和A3,客户可以选择红色,蓝色或绿色。然后在值A4中,客户选择所需的数量。在一个隐藏的单元格中,让我们说A5我们连接变量的选择并获得标签a2blue,例如,我们需要找到来自表1的WHICH产品具有标签a2blue,并将其数量更改为5,例如。

现在回到sheet1,我想创建一个带有产品可能标签的C列。

例如,productX可以有标签“a2blue,a3blue,b1blue”。我想创建一个公式,搜索工作表1中的哪个产品与客户的标签匹配并添加数量。假设我们在表1中发现,在第9行,产品代码为ProductX,在C列中有标签“a2blue,a3blue,b1blue”(注意,产品应该能够有多个标签,因此无法进行精确搜索,只需搜索文本是否包含在内)。对于此产品,我想将数量更改为5。

当然这也可以通过VBA来解决,但在VBA我很新,所以需要额外的支持。

Snapshot of sheet 2. Cell B7 shows that based on the customer's selection from sheet1, as end anchor item we need a product which has the tag "Concretebitumenend". The quantity was already calculated in C7.

图1:例如,在B4和B5,客户选择混凝土和沥青。稍后将在sheet2上生成系统不同部分所需的一些“标签”。     At B4 and B5, for example, the customer chooses Concrete and Bitumen. This will later on sheet2 generate some "tags" needed for different parts of the system

图2:工作表2的快照。单元格B7显示,根据客户对sheet1的选择,作为结束锚项目,我们需要一个具有“Concretebitumenend”标签的产品。数量已在C7中计算。 基于标签Concretebitumenend(Sheet2单元格B7中的标签,根据C7需要2个),当我单击Sheet1上的Calculate时,它应该找到Sheet1列H中哪个产品在列出的标签中具有该标签。例如,在这种情况下,H29不适合,因为它没有标签Concretebitumenend,所以应找到右行,然后它应该在col E中获得所需的数量。

感谢您的支持!

1 个答案:

答案 0 :(得分:0)

找到解决方案:

Sub proof()
'
' proof Macro
'
    n2 = 26
    n1 = 489

    For i = 29 To 489
    Cells(i, 5) = 0
    Next i

    For i = 1 To n2
        For j = 29 To n1

        a = UCase(Sheets("sheet2").Cells(i, 2))
        b = UCase(Sheets("sheet1").Cells(j, 8))
        If a = "" Then GoTo 10
        If (a <> "" And b <> "") And InStr(b, a) Then
        'Stop
        Sheets("sheet1").Cells(j, 5) = Sheets("sheet1").Cells(j, 5) + Sheets("sheet2").Cells(i, 3)

        End If


        Next j
10  Next i


'
End Sub