【问题标题】:I would like to have VB code in excel. If cell "A1:A200 is blank then concananet cells B1:C1 [closed]我想在excel中有VB代码。如果单元格“A1:A200 为空白,则 concananet 单元格 B1:C1 [关闭]
【发布时间】:2018-08-25 05:48:30
【问题描述】:

我想在 excel 中有 VB 代码。如果单元格“A1:A200 为空白,则 concananet 单元格 B1:C1。 enter image description here

【问题讨论】:

  • 这可能甚至不需要使用VB,内置的Excel函数可能就足够了。
  • 如果单元格 "A1:A200 是空白的,那么 concananet 单元格 B1:C1 ?所以我们可以冒险假设,如果 A 列是空白的,则连接第 1 行到第 200 行的 B 列和 C 列? 你可以简单地把 =IF(ISBLANK(A1),CONCATENATE(B1,C1),"")

标签: vba excel excel-formula


【解决方案1】:
Sub FillColumnA()
    Dim i As Long
    For i = 1 To 200
        If Cells(i, 1).Value = "" Then
            Cells(i, 1).Value = Cells(i, 2).Value & Cells(i, 3).Value
        End If
    Next
End Sub

【讨论】:

  • 你为什么要为此编写 VBA?可以使用工作表公式来完成,这将比 VBA 高效得多,而所有读取和写入单元格的调用都是如此。
  • @teylyn 我认为这取决于,如果你想检查 A 列中的值然后基于此覆盖它,那么你需要将初始值存储在内存中,这只能在 VBA 中实现。所以,我同意你的一般性言论,但在这种情况下,我必须不同意。
【解决方案2】:

将您的数据向下移动 1 行并添加标题。通过选择区域中的填充单元格并按 Ctrl+T 将数据设置为表格。然后在 D2 列放

=IF(ISBLANK(A2),CONCATENATE(B2,C2),"")

表格将使用公式自动填充其余列。

如果您只是按 Ctrl+T 而不移动数据,然后不选择我的表有标题,数据将为您移动。

【讨论】:

    【解决方案3】:

    没有循环

    Sub FillColumnA()
        With Range("A1:A" & Cells(Rows.Count, 2).End(xlUp).Row)
           .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=CONCATENATE(RC2,RC3)"
           .Value = .Value
        End With
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-14
      • 2022-11-11
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 2020-10-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多