我在特定列的细胞,其在括号[]具有数字多行文本,在Excel的多行文本截断
实际数据运行到超过1000行的每一行,要生成结果在新插入的列中输出1和2。
我有公式提取支架之间写的文本,但它只在第一行工作,而不是在整个多行文本中。
=MID(A2,FIND("[",A2)+1,FIND("]",A2)-FIND("[",A2)-1)
任何人都可以帮我用宏在特定的列“ABC”上运行,只保留括号中的文本。
我在特定列的细胞,其在括号[]具有数字多行文本,在Excel的多行文本截断
实际数据运行到超过1000行的每一行,要生成结果在新插入的列中输出1和2。
我有公式提取支架之间写的文本,但它只在第一行工作,而不是在整个多行文本中。
=MID(A2,FIND("[",A2)+1,FIND("]",A2)-FIND("[",A2)-1)
任何人都可以帮我用宏在特定的列“ABC”上运行,只保留括号中的文本。
试着这么做:
Sub get_btw_bracket()
output_row = 1
input_row = 1
input_column = 1
Do Until Sheet1.Cells(1, input_column) = "ABC" Or input_column = 50
input_column = input_column + 1
Loop
If input_column = 50 Then Exit Sub
Do Until Sheet1.Cells(input_row, input_column) = ""
cell_data = Sheet1.Cells(input_row, input_column)
split_by_newline = Split(cell_data, Chr(10))
For Each element In split_by_newline
Sheet1.Cells(output_row, 10) = Right(element, Len(element) - InStr(element, "[") + 1)
output_row = output_row + 1
Next element
input_row = input_row + 1
Loop
End Sub
启用您的工作表,请按Alt + F11
并选择插入宏 - >模块并粘贴到模块窗口下面的代码,
Sub SplitCells()
'Update 20141024
Dim Rng As Range
Dim WorkRng As Range
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address,
Type:=8)
For Each Rng In WorkRng
lLFs = VBA.Len(Rng) - VBA.Len(VBA.Replace(Rng, vbLf, ""))
If lLFs > 0 Then
Rng.Offset(1, 0).Resize(lLFs).Insert shift:=xlShiftDown
Rng.Resize(lLFs + 1).Value = Application.WorksheetFunction.Transpose(VBA.Split(Rng, vbLf))
End If
Next
End Sub
保存模块中,选择要修改的列的范围,然后按模块中的F5键。范围再次显示在对话框中。按确定。 现在你将把所有的文本放在不同的行中。您现在可以使用此列并使用公式来派生所需的字符串。希望这可以帮助。
如果你不想使用宏,并希望用纯粹的Excel做到这一点,也有一种方法。让我知道如果你想要 –
谢谢gowtham,但解决方案拆分多行分隔行,我有兴趣保持所有内容在同一单元格,但删除各自的多行文本,然后标签看到更新的图像,因为预期结果 – sapna
@sapna我不理解两个图像。两者似乎都是相似的。请详细说明.... –
它在我看来像你所要做的就是保留第一个空格剩下的文字。 – Jeeped
对不起,我将来会尽量记住这一点。你是对的 – sapna