如何将相同的IF语句应用于同一列中的多个单元格? (EXCEL)

时间:2016-04-13 16:38:14

标签: mysql excel vba excel-vba macros

我目前正在开发一个宏来创建一个包含不同产品和选项代码的矩阵。我需要的大部分信息已经从我们运行的订单创建系统中导出。然而,其中一个不导出的东西是大约150个选项代码的描述。每个选项代码都带有在单独的工作表中概述的描述,因此我不必总是返回到另一个工作表,而是决定使用IF语句将描述编程到代码中。我的目标是编写一个程序来查看列中的每个选项代码,然后在相邻列中插入该选项代码的匹配描述。

例如: 我的程序会说:如果活动单元格显示“AAAAA”,则水平选择一个单位偏移的单元格并插入“选项1”。否则,如果它显示“BBBBB”,则插入另一个选项说明。

由于我们的产品订单总是在变化,我需要每周大约3000个产品提供此信息,我需要知道如何键入我的条件一次,然后插入一段代码,告诉程序携带它输出列中的下一个(X)选项数,或者只要单元格中包含数据。

我很确定循环可以解决我的问题,但我还能找到满足我要求的循环脚本。

这是我到目前为止所拥有的:

Private Sub Option_Matrix_2()
'Enters data for Option code Description into worksheet
Range("G4").Select
If ActiveCell.FormulaR1C1 = "AAAA" Then
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
 ActiveCell.FormulaR1C1 = "Description 1"



ElseIf ActiveCell.FormulaR1C1 = "CCCCC" Then
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
 ActiveCell.FormulaR1C1 = "Description 2"


ElseIf ActiveCell.FormulaR1C1 = "EEEEE" Then
ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
 ActiveCell.FormulaR1C1 = "Description 3"

 Else
 ActiveCell.Offset(rowOffset:=0, columnOffset:=1).Activate
 ActiveCell.FormulaR1C1 = ""

End If

由于我有超过3000个产品和150个不同的选项,我需要知道我需要插入什么来告诉宏为包含数据的列中的每个单元格运行代码。在这种情况下,它将是(“G4:G3000”)

如果还有其他需要的信息,请告诉我,我很乐意以任何方式提供帮助

1 个答案:

答案 0 :(得分:0)

你可以试试这个

Option Explicit

Private Sub Option_Matrix_3()

With Sheets("Sheet01").Range("G4:G3000") ' change to your actual sheet name and range
    .Copy
    With .Offset(, 1)
        .PasteSpecial xlPasteValues

        .Replace What:="AAAA", LookAt:=xlWhole, Replacement:="Description 1", SearchOrder:=xlByColumns, MatchCase:=True
        .Replace What:="CCCCC", LookAt:=xlWhole, Replacement:="Description 2", SearchOrder:=xlByColumns, MatchCase:=True
        .Replace What:="EEEEE", LookAt:=xlWhole, Replacement:="Description 3", SearchOrder:=xlByColumns, MatchCase:=True
    End With
End With

End Sub

看起来很快!