我对编码世界很陌生。我有一组单元格的行,其中包含文本,中间有两行空行。它们是2和3的组,位于A和B列。
对于每组文本,我需要转到B列文本上方的最后一个空白单元格,然后输入“来自该组单元格A的顶行的文本string_text”。
我试着用这个:
Sub FindBlankAndFill()
Dim cnter As Integer
firstRow = Cells(Rows.Count, 1).End(xlUp).Row
cnter = 0
For i = 2 To firstRow
If IsEmpty(Cells(i, 1)) Then
Select Case cnter
Case 0: Cells(i, 2).Value = "Test Value"
Case Else: Cells(i, 2).Value = ""
End Select
cnter = cnter + 1
End If
Next i
End Sub
这仅适用于第一组文本,然后将其他组完全留空。上面的代码也没有这样,它将拉取文本字符串所需的单元格值。
如果您有任何想法或解决方案,我将非常感谢您的帮助。 在After图片中,黄色单元格是VBA应添加的单元格。应该从该特定组的A列中的单元格中拉出“测试值”下划线之后的部分。
答案 0 :(得分:0)
你的算法很接近。基本上,您使用cnter
变量来跟踪遇到的空白行,因此当您找到更多数据时,需要重置该值。您的firstRow
声明确实找到了lastRow
。
Option Explicit
Sub FindBlankAndFill()
Dim ws As Worksheet
Dim lastRow As Long
Dim cnter As Integer
Dim i As Integer
Set ws = ActiveSheet
lastRow = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
cnter = 0
For i = lastRow To 1 Step -1
If IsEmpty(ws.Cells(i, 1)) Then
Select Case cnter
Case 0:
'--- found the blank row above the data
ws.Cells(i, 2).Value = "Test Value_" & ws.Cells(i + 1, 1)
cnter = 1
Case 1:
'--- found the blank row below the data,
' so do nothing
End Select
Else
'--- we found some data, so set the flag
' for when we find the next blank row
cnter = 0
End If
Next i
End Sub