Vba 如何逐行循环直到找到空白单元格

Vba 如何逐行循环直到找到空白单元格,vba,excel,Vba,Excel,我在Excel 2010中工作。我试图将值串联在一列中,并在每个单元格之间输入一个字符(10)。所以,我在单元格BC2:BC11中工作,我想连接单元格BC1中的所有内容。我为BC1想出了这个: ActiveCell.FormulaR1C1 = "=R[1]C & CHAR(10) & R[2]C & CHAR(10) & R[3]C & CHAR(10) & R[4]C & CHAR(10) & R[5]C & CHAR(1

我在Excel 2010中工作。我试图将值串联在一列中,并在每个单元格之间输入一个字符(10)。所以,我在单元格BC2:BC11中工作,我想连接单元格BC1中的所有内容。我为BC1想出了这个:

ActiveCell.FormulaR1C1 = "=R[1]C & CHAR(10) & R[2]C & CHAR(10) & R[3]C & CHAR(10) & R[4]C & CHAR(10) & R[5]C & CHAR(10) & R[6]C & CHAR(10) & R[7]C & CHAR(10) & R[8]C & CHAR(10) & R[9]C & CHAR(10) & R[10]C"
这是可行的,但问题是数组中的值通常不到10个,所以我得到了一堆在末尾的换行符,这会弄乱下游的一些东西。我想提出一种优雅的方法,通过BC2:BC11循环,并在每个单元格之间使用CHAR(10)组合所有内容。有人能给我一个剧本或者给我指出正确的方向吗


谢谢

实现这一点的方法有很多种。假设您总是使用BC2:BC11,您可以创建一个简单的for循环来构建字符串,然后将结果输出到活动单元格

Dim newString As String
For i = 2 To 11

    If ActiveSheet.Range("BC" & i).Text <> "" Then
        If newString = "" Then
            newString = ActiveSheet.Range("BC" & i).Text
        Else
            newString = newString & Chr(10) & ActiveSheet.Range("BC" & i).Text
        End If
    End If

Next

ActiveCell.Value = newString
Dim newString作为字符串
对于i=2到11
如果ActiveSheet.Range(“BC”&i.Text”),则
如果newString=“”,则
newString=ActiveSheet.Range(“BC”&i).Text
其他的
newString=newString&Chr(10)&ActiveSheet.Range(“BC”&i).Text
如果结束
如果结束
下一个
ActiveCell.Value=newString

希望这能有所帮助:)

实现这一点的方法有很多种。假设您总是使用BC2:BC11,您可以创建一个简单的for循环来构建字符串,然后将结果输出到活动单元格

Dim newString As String
For i = 2 To 11

    If ActiveSheet.Range("BC" & i).Text <> "" Then
        If newString = "" Then
            newString = ActiveSheet.Range("BC" & i).Text
        Else
            newString = newString & Chr(10) & ActiveSheet.Range("BC" & i).Text
        End If
    End If

Next

ActiveCell.Value = newString
Dim newString作为字符串
对于i=2到11
如果ActiveSheet.Range(“BC”&i.Text”),则
如果newString=“”,则
newString=ActiveSheet.Range(“BC”&i).Text
其他的
newString=newString&Chr(10)&ActiveSheet.Range(“BC”&i).Text
如果结束
如果结束
下一个
ActiveCell.Value=newString

希望有帮助:)

一个没有循环的代码

With ActiveCell
    .value = Join(Application.Transpose(.Offset(1).Resize(10).value), " ") '<--| change "10" to your actual cells number to be considered below active cell
    .value = WorksheetFunction.Trim(.value) 
    .Replace " ", Chr(10)
End With
使用ActiveCell的


.value=Join(Application.Transpose(.Offset(1).Resize(10).value),“”)一个可能没有循环的代码

With ActiveCell
    .value = Join(Application.Transpose(.Offset(1).Resize(10).value), " ") '<--| change "10" to your actual cells number to be considered below active cell
    .value = WorksheetFunction.Trim(.value) 
    .Replace " ", Chr(10)
End With
使用ActiveCell的


.value=Join(Application.Transpose(.Offset(1).Resize(10).value),“”)您现在使用的代码在哪里?您现在使用的代码在哪里?@ryguy7272,yio通过了吗?@ryguy7272,yio通过了吗?