【问题标题】:First blank ("") cell in column with IF formula带有 IF 公式的列中的第一个空白 ("") 单元格
【发布时间】:2025-12-22 03:55:12
【问题描述】:

我有一个宏可以将一张表的数据准确地复制到另一张表中。

Sub QuickViewRegMgmt()

    ("Reg Management").Select
    Cells.Select
    Selection.Copy
    Sheets("Quick View Reg Mgmt").Select
    Cells.Select
    ActiveSheet.Paste

End Sub

我希望此宏也可以转到 C 列中的最后一个非空白单元格(或第一个空白,我真的不在乎这两种方式)。我尝试了简单的结束/偏移代码,例如

Range("A1").End(xldown).Offset(1,0).Select 

然而,我的问题是直接复制宏也复制了基础公式,对于 C 列来说,它是一个 IF 公式。因此,列中的任何单元格实际上都不是空的,而是它们都有一个 IF 公式,从而产生真/假值(分别为“”或 VLOOKUP)。

=IF(VLOOKUP('Reg Management'!$Y260,'Reg Guidance'!$A:$V,3,FALSE)=0,"",VLOOKUP('Reg Management'!$Y260,'Reg Guidance'!$A:$V,3,FALSE))

这意味着结束/偏移代码将转到具有公式 (C1000) 的列中的最后一个单元格,而不是转到值为“”(当前为 C260)的第一个单元格。

我可以在这个宏中添加什么代码来选择第一个包含 IF 公式的单元格,从而导致值为 "" ---- 看起来是空白的?

【问题讨论】:

  • .PasteSpecial xlPasteValues ?或者xlPasteValuesAndNumberFormats..
  • 您可以使用Range.Find 来获取"" 在设置范围内的第一个单元格,例如Columns(1)
  • @DirkReichel - 怎么样?我一直在尝试,但它会跳过 ="" 行并转到第一个真正的空单元格。
  • @BruceWayne 你在看xlValues 还是xlFormulas? (例如 Columns(3).Find(What:="", LookIn:=xlValues, LookAt:=xlWhole) 应该可以工作 - 它对我有用。)
  • @YowE3K - ...好吧,我没有指定,所以我想是xlValues。让我重新审视我正在尝试的事情并报告回来。我想让我的答案更好,而不仅仅是循环遍历单元格。在我看来,这最多只能是两条线。

标签: vba excel nonblank


【解决方案1】:

在尝试使用SpecialCells(),或使用Find() 或其他我无法获得它的东西之后......所以这是一个相当“肮脏”的方法:

Sub test()
Dim lastRow As Long, lastFormulaRow As Long
lastRow = Range("A" & Rows.Count).End(xlUp).Row

Dim i As Long
For i = lastRow To 1 Step -1
    If Cells(i, 1).Formula <> "" And Cells(i, 1).Value = "" Then
        lastFormulaRow = i
        Exit For
    End If
Next i

End Sub

Edit2:这是使用.SpecialCells() 的一个。当然,我认为我们可以进一步减少它,我更喜欢它:

Sub lastRow()
Dim tempLastRow As Long
tempLastRow = Range("C" & Rows.Count).End(xlUp).Row 

Dim lastRow As Range
Set lastRow = Columns(3).SpecialCells(xlCellTypeFormulas).Find(What:="", LookIn:=xlValues, LookAt:=xlWhole, searchdirection:=xlPrevious, after:=Range("C" & tempLastRow))
Debug.Print lastRow.Row
End Sub

它返回10 作为行。

编辑:确保Range()Cells() 之前添加工作表引用以获取最后一行。否则,它将查看您的活动工作表以获取信息。

【讨论】:

    最近更新 更多