【问题标题】:How can I loop down row by row until a blank cell is found如何逐行循环直到找到空白单元格
【发布时间】:2017-01-11 21:42:57
【问题描述】:

我在 Excel 2010 中工作。我试图连接一列中的值,并在每个单元格之间输入一个 Char(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) 组合所有内容。有人可以给我一个脚本或指出正确的方向吗?

谢谢。

【问题讨论】:

  • 你现在使用的代码在哪里?

标签: vba excel


【解决方案1】:

没有循环的可能代码

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

【讨论】:

  • @ryguy7272,你通过了吗?
【解决方案2】:

您可以通过多种方式实现这一目标。假设您始终使用 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

希望有帮助:)

【讨论】:

    猜你喜欢
    • 2015-10-07
    • 2019-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多