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用上面的单元格替换值直到空白并循环的主要内容,如果未能解决你的问题,请参考以下文章