excel - 在下一行Excel vba中使用公式拆分单元格

标签 excel excel-formula vba

如果包含“,”,我正在尝试将单元格拆分到下一行,我正在使用此公式从 sheet1(=Sheet1!B3)获取数据,依此类推,数据位于 B3:AF50 中。
我使用这个 vba 代码

Sub splitcells()
Dim InxSplit As Long
Dim SplitCell() As String
Dim RowCrnt As Long

 With Worksheets("Sheet2")

 RowCrnt = 3

 Do While True


  If .Cells(RowCrnt, "b").Value = "" Then
    Exit Do
  End If

  SplitCell = Split(.Cells(RowCrnt, "b").Value, ",")

  If UBound(SplitCell) > 0 Then

    .Cells(RowCrnt, "b").Value = SplitCell(0)


    For InxSplit = 1 To UBound(SplitCell)
      RowCrnt = RowCrnt + 1

      .Cells(RowCrnt, "b").Value = SplitCell(InxSplit)

      .Cells(RowCrnt, "B").Value = .Cells(RowCrnt - 1, "B").Value
    Next
  End If

  RowCrnt = RowCrnt + 1

  Loop

End With

End Sub

问题是
  • 我不知道如何在此代码中给出 range(B3:Af50)
  • 此代码未保留我的代码 (=Sheet1!)
  • 它只是复制 ","
  • 之前的值

    我的单元格值是这样的

    B3 ABC,XYZ,KKK,LLL
    我希望它拆分为 B3 = ABC 和 B4 = XYZ B5 = KKK b6 = LLL

    如果 B3 中的值发生更改,则应清除早期拆分的单元格(B4、B5、B6),并在拆分所需条件时更新“,”

    有这样的表

    enter image description here

    拆分后应该看起来像公式完整的那样

    enter image description here

    最佳答案

    不需要 VBA。

    Sheet1 单元格中的数据 B3 ,把它放在任何工作表的任何单元格中:

    =TRIM(MID(SUBSTITUTE(Sheet1!$B3,",",REPT(" ",999)),COLUMNS($A:A)*999-998,999))
    

    并复制过来。

    enter image description here

    编辑#1:

    复制向下 ,请改用此公式:
    =TRIM(MID(SUBSTITUTE(Sheet1!B$3,",",REPT(" ",999)),ROWS($1:1)*999-998,999))
    

    关于excel - 在下一行Excel vba中使用公式拆分单元格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34860423/

    相关文章:

    arrays - Excel > 在未排序的数组中查找第一个第一个/最低的非零值

    java - 如何读取apache poi 3.9中单元格中每个文本的字体颜色

    vba - Excel 中的数组常量

    windows - 获取按钮的类名

    excel - 从文本中解析子字符串

    excel - 在excel中重命名插入的图片

    vba - 如何为空单元格上色

    excel - 突出显示各列每行中的最高值

    不带 SCAN 或 OFFSET 的数组的累积积/运行积的 Excel 动态解决方案

    excel - 在某一点之后查找文本的最佳方法是什么