公式只有单元格不为空时
我试图做一个公式,将填补细胞的价值,但只有一次,当细胞是空的。 一旦填充,我希望值保持原样,即使单元格是公式的一部分发生了变化。
即
C: =VLOOKUP(Cx,'A$1:B$3,2,FALSE)
渊源
ABC John 1 1 Bob 4 4 Jim 6 6
改变吉姆的B值后
Jim 10 6
所以我希望VLOOKUP只有在不存在的情况下才能获取值。 我试图做一个IF,但我得到了一个循环引用错误:
=IF(C1= "", VLOOKUP(C1,'A$1:B$3,2,FALSE),C1)
我认为这是你想要的
- 右键单击您的工作表选项卡
-
View Code
- 复制并粘贴在下面的代码
- 按alt & f11返回到Excel
如果在B4
input12 并且 A4
不是空白的话
- 如果
C4
是空的,它将等于12 - 如果
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
我不完全确定你想要什么,但我认为brettdj有答案。 Mine会将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