1

我正在尝试做一个公式来填充单元格值,但只有一次,当单元格为空时。填充后,我希望值保持原样,即使公式中的单元格发生了变化。

IE

C: =VLOOKUP(Cx,'A$1:B$3,2,FALSE)

原创

A       B      C
John    1      1
Bob     4      4
Jim     6      6

更改 Jim 的 B 值后

Jim     10      6

所以我希望 VLOOKUP 仅在一个值不存在时才获取一个值。我尝试使用 IF 来执行此操作,但出现循环引用错误:

=IF(C1= "", VLOOKUP(C1,'A$1:B$3,2,FALSE),C1)
4

2 回答 2

1

我认为这是你想要的

  • 右键单击您的工作表选项卡
  • View Code
  • 复制并粘贴下面的代码
  • & 返回 Excel

如果您输入说 12B4 并且 A4不是空白,那么

  1. 如果C4为空,则设置为 12
  2. 如果C4有值,则保留

代码

Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng1 As Range
Dim rng2 As Range
Set rng1 = Intersect(Columns("B:B"), Target)
If rng1 Is Nothing Then Exit Sub
Application.EnableEvents = False
For Each rng2 In rng1
If rng2.Offset(0, -1).Value <> vbNullString Then rng2.Offset(0, 1).Value = rng2.Value
Next
Application.EnableEvents = True
End Sub
于 2013-05-03T02:58:18.343 回答
0

我不完全确定你想要什么,但我认为 brettdj 有答案。我的会将 C 列中的所有空单元格更改为一个公式,以根据您的情况进行修改,此时它只是查找名称并返回 B 列值。

请我知道VLOOKUP()不是必需的,但我想展示如何在这种情况下使用它。

Sub change_empty()

    Dim l As Long, r As Range
    l = Me.Cells.Find("*", , , , xlByRows, xlPrevious).Row
    Set r = Me.Range("C1").Resize(l).SpecialCells(xlCellTypeBlanks)

    r.FormulaR1C1 = "=VLOOKUP(RC1,C1:C2,2,FALSE)"

End Sub
于 2013-05-03T03:13:59.573 回答