2017-04-08 59 views
-3

我在特定列的细胞,其在括号[]具有数字多行文本,在Excel的多行文本截断

LINK TO FILE

实际数据运行到超过1000行的每一行,要生成结果在新插入的列中输出1和2。

我有公式提取支架之间写的文本,但它只在第一行工作,而不是在整个多行文本中。

=MID(A2,FIND("[",A2)+1,FIND("]",A2)-FIND("[",A2)-1) 

任何人都可以帮我用宏在特定的列“ABC”上运行,只保留括号中的文本。

+0

它在我看来像你所要做的就是保留第一个空格剩下的文字。 – Jeeped

+0

对不起,我将来会尽量记住这一点。你是对的 – sapna

回答

2

试着这么做:

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 
+0

我的列更改可以通过标题名称找到它吗?并插入数据的下一列? – sapna

+0

“Sheet1.Cells(input_row,1)”中的“1”是该列的位置。 “1”表示列A,“2”表示列B等等。如果要更改列,则需要将“1”更改为变量,并将该变量设置为要循环访问的列。因此,您需要另一个do循环,循环遍历第1行中的列并找到您的标题名称。 – Charles

+0

不幸的是,它没有任何我已经更新了screeshot 2至极列名,你能帮忙吗? – sapna

0

启用您的工作表,请按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键。范围再次显示在对话框中。按确定。 现在你将把所有的文本放在不同的行中。您现在可以使用此列并使用公式来派生所需的字符串。希望这可以帮助。

+0

如果你不想使用宏,并希望用纯粹的Excel做到这一点,也有一种方法。让我知道如果你想要 –

+0

谢谢gowtham,但解决方案拆分多行分隔行,我有兴趣保持所有内容在同一单元格,但删除各自的多行文本,然后标签看到更新的图像,因为预期结果 – sapna

+0

@sapna我不理解两个图像。两者似乎都是相似的。请详细说明.... –