【问题标题】:Finding the first empty cell in a column using VBA without a loop [duplicate]使用没有循环的VBA查找列中的第一个空单元格[重复]
【发布时间】:2014-06-23 21:18:50
【问题描述】:

所以我在 VBA 中有这两行代码,它们在列底部找到一个空单元格,然后返回下一个单元格的指针。

RowPointer = ThisWorkbook.Sheets("Current").Cells(65000, 4).End(xlUp).Row
If ThisWorkbook.Sheets("Current").Cells(RowPointer, 4).Formula <> "" Then RowPointer = RowPointer + 1

问题是这种自下而上的搜索,我需要在列中找到第一个空单元格而不是最后一个。我已经看到了一些解决此问题的方法,它们使用循环来遍历列,但我正在使用的电子表格相当大,并且循环需要很长时间才能执行。所以我的问题是有没有一种简单的方法可以从上到下搜索一列以找到第一个空单元格?

【问题讨论】:

  • @brettdj 是重复的吗?如果A1:A10A12-A20不为空,那么第一个空白=A11,最后一个非空=A20,不是吗?
  • @Ioannis 是的,因为这只是使用Find 的一个小改动(尽管我承认我确实链接回了一行中的非空白问题,而不是列问题中的空白)。 ...
  • 调整我链接到Set ws = Sheets("Current") 然后Set rng1 = ws.Columns(4).Find("", ws.Cells(Rows.Count, "D"), xlFormulas, , xlByColumns, xlNext) 的问题中的代码会找到第一个空白结果

标签: vba excel


【解决方案1】:

可能是这样的

RowPointer = Sheets("Current ").Columns(4).SpecialCells(xlCellTypeBlanks).Cells(1,1).Row

从手机发帖,希望能成功!

【讨论】:

  • 会起作用,但 (1) 特殊单元格应始终与错误检查结合使用 (2) 不会捕获公式空白(尽管我注意到问题确实说 空单元格
  • 感谢您的反馈!我对(1)的想法是,在这种特殊情况下,当整个列被填满时,它会返回一个错误(这确实驳斥了错误捕获的需要,但实际上它应该是健壮的)并且对于(2)我也注意到了单元格应该是空的而不是空的。
【解决方案2】:

试试这个(我还没试过):

RowPointer = ThisWorkbook.Sheets("Current").Cells(0, 4).End(xlDown ).Row
If ThisWorkbook.Sheets("Current").Cells(RowPointer, 4).Formula <> "" Then RowPointer = RowPointer + 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 2014-09-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多