Excel VBA-查找A列中任何值的第一个出现位置,然后将B列的值插入C列(同一行)

时间:2018-12-12 17:00:01

标签: excel vba

我正在尝试编写一个VBA脚本,每周进行一次琐事。这是我的数据:

IMG1

我运行了一个宏,该宏清除了C列的值。然后我必须在A列中找到每个唯一值的第一个匹配项。当我找到第一个匹配项时,我在C列的同一行中写“ = B列”仅用于该行。基本上,我想说的是:“ A4是唯一值的首次出现;因此C4 = B4。”我无法执行简单的IF()函数并将其向下拖动,因为C列的其余部分需要保持空白(由IF(NOT(ISBLANK))函数引用)。

我是VBA的新手,但不幸的是,我记录了我的所作所为,没有抓住我的真实意图。这是宏,似乎效率不高:

Sub Macro1()
'
' Macro1 Macro
'

    Range("C8").Select
    Application.Left = 3591.25
    Application.Top = 268
    Windows("Copy of OPS_schedule_6.xlsm").Activate
    Application.Left = 3451.75
    Application.Top = 163
    Windows("Book1").Activate
    Range("A1").Select
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$B$9").AutoFilter Field:=1, Criteria1:="Alpha"
    Range("C1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=RC[-1]"
    Range("C2").Select
    ActiveSheet.Range("$A$1:$B$9").AutoFilter Field:=1, Criteria1:="Bravo"
    Range("C4").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=RC[-1]"
    Range("C5").Select
    ActiveSheet.Range("$A$1:$B$9").AutoFilter Field:=1, Criteria1:="Charlie"
    Range("C8").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=RC[-1]"
    Range("C9").Select
End Sub

1 个答案:

答案 0 :(得分:0)

如果您使用的公式例如

 =IF(COUNTIF(A$1:A1,A1)=1,B1,"del")

您可以使用Find&Select清除del,或者,由于已标记了此VBA,因此可以清除:{p>

 Selection.SpecialCells(xlCellTypeFormulas, 2).ClearContents