繁体   English   中英

将多行单元格拆分成行

[英]Split cell with multiple lines into rows

我有一个带有换行符的单元格的工作簿(通过 ALT + ENTER 输入)。

我必须将它们分成单独的行。 所有单元格都在 A 列中。

单元格中的每一行前面都有一个项目符号(例如“*”),它可以作为在这一点上打破线条的灯塔。

在此处输入图片说明

您可以将 split 与 Chr(10) 或 VbLf 一起使用

Dim cell_value As Variant
Dim counter As Integer

'Row counter
counter = 1

'Looping trough A column define max value
For i = 1 To 10

    'Take cell at the time
    cell_value = ThisWorkbook.ActiveSheet.Cells(i, 1).Value

    'Split cell contents
    Dim WrdArray() As String
    WrdArray() = Split(cell_value, vbLf)

    'Place values to the B column
    For Each Item In WrdArray
        ThisWorkbook.ActiveSheet.Cells(counter, 2).Value = Item
        counter = counter + 1
    Next Item


Next i

不,你有数组将每一行放置到不同的单元格

不需要为此编写代码,让它变得简单。

按照以下步骤操作。

选择要拆分的数据集 -> 转到数据选项卡 -> 选择“文本到列” -> 从此弹出窗口中选择“分隔” -> 选择分隔文本的分隔符 -> 选择目标单元格 - > 点击“确定”

试试这个。

问候, 阿什温

来自 Markus 的编辑:对于作为分隔符的换行符,请使用“Ctr-J”

如果您选择单元格并运行宏,您将在下一列中获得您想要的内容,如下所示:

Option Explicit

Public Sub selection_into_rows()


    Dim k           As Variant
    Dim l_counter   As Long

    k = Split(Selection, Chr(10))

    For l_counter = LBound(k) To UBound(k)
        Cells(l_counter + 1, Selection.Column + 1) = k(l_counter)
    Next l_counter

End Sub

这仅在选择后才适用于一行(但应该让您开始):

Option Explicit

Public Sub SelectionIntoRows()

Dim k() As String
Dim l As Long
Dim i As Long

k() = Split(Range("A1"), " ")
i = 1
For l = 0 To UBound(k)
    Cells(i, 1) = k(l)
    i = i + 1
Next l

End Sub

子提取()

'查询 B 单元格中的提取数据,除以 ALT+Enter,逗号空格 '必须在前面的 Sheet1、Sheet2 和 Sheet3 中创建 '注意! 如果字段 B 为空,则不返回任何数据!! 如果需要,手动添加 A 列(带有空 B 列)!! '在结果(Sheet2)中手动删除空单元格'在开始查询之前从输入数据中删除重复项!! '不能用句号'完成后将显示完成消息

Dim c As Long, r As Range, I As Long, d As Long, Temp() As String d = 0 For Each r In Range("B2:B" & Range("B" & Rows.Count).End( xlUp).Row) ' 更改它以适合您的范围.. c = 2 Temp = Split((r.Value), Chr(10)) For i = LBound(Temp) To UBound(Temp)

        Sheets("Sheet2").Cells(r.Row, c - 1).Offset(d, 0).Value = Cells(r.Row, r.Column - 1).Value
        Sheets("Sheet2").Cells(r.Row, c).Offset(d, 0).Value = Temp(i)
        Cells(r.Row, c).Offset(d, 0).Select
        ActiveCell.Value = Trim(ActiveCell.Value)
        d = d + 1
    Next
    d = d - 1
Next
Sheets("Sheet2").Select
Columns("A:B").Select
ActiveSheet.Range("$A$1:$B$62856").RemoveDuplicates Columns:=Array(1, 2), _
    Header:=xlYes
Range("A1").Select

我从糟糕的 Acrobat PDF 到 XLSX 转换中有六个这样的 blob,遍布 500 行。 我将文本 blob(如 OP)复制到记事本中,从开始和结束行中删除“”,然后粘贴到新的电子表格中。 这告诉我要插入多少行。 然后粘贴到那个洞里。

“这是我所有的输入文本”

然后我可以使用 TextToCol。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM