VBA用上面的单元格替换值直到空白并循环

Posted

技术标签:

【中文标题】VBA用上面的单元格替换值直到空白并循环【英文标题】:VBA replace value with cell above until blank and loop 【发布时间】:2016-11-27 10:31:42 【问题描述】:

我希望根据上面的单元格向下填充值直到空白单元格,这应该一直持续到没有更多内容为止,例如:参考下表,将顶部值向下复制直到空白,因此,'小msa' 将向下复制到 'inter' 并停止,'petty ksm' 将向下复制到 'general','comp' 将向下复制到 'motor'。

列:A 琐碎的msa 间

小知识 福利 水 预付款 一般

补偿 旅行 马达 编辑:这是一个大约 15,000 行的长列表

谢谢

【问题讨论】:

添加更多细节(例如:在最后一个空白单元格之前要写下的值来自哪里?)以及您的编码尝试以及遇到的问题 只需录制一个宏并查看生成的 VBA 代码! 【参考方案1】:

选择第一个你有值'petty msa'的单元格然后 - 1. 按 ctrl+shift+down - 选择要复制的范围 2. 按 ctrd+down - 复制值 现在您已将“petty msa”复制到包含“inter”的单元格

对每个范围重复此过程。

【讨论】:

谢谢,但这是一个很长的列表,有将近 15,000 行,会很耗时【参考方案2】:

根据您的示例,鉴于您的数据“结构”,应该这样做:

Option Explicit

Sub main()
    Dim area As Range

    With Worksheets("filldown").Columns("A").SpecialCells(xlCellTypeConstants) '<--| change "filldown" to your actual worksheet name and "A" to actual index of column with data to be "filled down"
        For Each area In .Areas
            area.Value = area(1)
        Next area
    End With
End Sub

【讨论】:

【参考方案3】:

在 A1 中插入一个空白行。在单元格 B2 中粘贴下面的公式并将其复制下来。

= if(A1="",A2,B1)

这应该可以工作

【讨论】:

以上是关于VBA用上面的单元格替换值直到空白并循环的主要内容,如果未能解决你的问题,请参考以下文章

Vba找到第一个空单元格并平均它上面的4个单元格并将值粘贴到另一个单元格中

在列中查找值,填充'直到非空白单元格

在 Excel 中重复宏,直到到达空白单元格

你如何比较vba中单元格的ASCII值?

将多个值写入一个单元格 - VBA

用于查找空白单元格的 VBA