【发布时间】:2020-03-10 22:53:41
【问题描述】:
我有这个excel文件:
我想恢复为第一列,每个单元格的一部分内容。但是,单元格是这种形式:
sentence [A/sentence] [B/sentence] [C/sentence] sentence
我希望只有 [ ] 之间的模式。
我有这个代码:
Sub groupByTypo2()
Dim rng As Range, c As Range
Dim dict As Object, dict2 As Object, dict3 As Object, col As Collection
Dim dictFonctionnel As Object, dictTechnique As Object, dictSecurite As Object
Dim v, w, k
Dim sKey As String, S As String
Dim I As Long
'get the input range for the labels
With ActiveSheet
Set rng = .Range(.Range("C1"), .Cells(.Rows.Count, 3).End(xlUp))
End With
For Each c In rng.Cells
v = Trim(c.Value)
Debug.Print "valeur de v : " & v
Z = Split(Trim(c.Offset(0, -2).Value))
For Each w In Z
Debug.Print "valeur de w : " & w
Next w
Next c
End Sub
这会导致输出:
valeur de v : Fonctionnel
valeur de w : sentence
valeur de w : [A/sentence
valeur de w : 1]
valeur de w : [B/sentence
valeur de w : 2]
valeur de w : [C/sentence
valeur de w : 3]
valeur de w : sentence
valeur de v : Fonctionnel
valeur de w : sentence
valeur de w : [A/sentence
valeur de w : 4]
valeur de w : [B/sentence
valeur de w : 5]
valeur de w : [C/sentence
valeur de w : 6]
valeur de w : sentence
valeur de v : Securite
valeur de w : sentence
valeur de w : [A/sentence
valeur de w : 7]
valeur de w : [B/sentence
valeur de w : 8]
valeur de w : [C/sentence
valeur de w : 9]
valeur de w : sentence
valeur de v : Fonctionnel
valeur de w : sentence
valeur de w : [A/sentence
valeur de w : 10]
valeur de w : [B/sentence
valeur de w : 11]
valeur de w : [C/sentence
valeur de w : 12]
valeur de w : sentence
valeur de v : Technique
valeur de w : sentence
valeur de w : [A/sentence
valeur de w : 13]
valeur de w : [B/sentence
valeur de w : 14]
valeur de w : [C/sentence
valeur de w : 15]
valeur de w : sentence
valeur de v : Securite
valeur de w : sentence
valeur de w : [A/sentence
valeur de w : 16]
valeur de w : [B/sentence
valeur de w : 17]
valeur de w : [C/sentence
valeur de w : 18]
valeur de w : sentence
但我想拥有:
valeur de v : Fonctionnel
valeur de w : [A/sentence 1]
valeur de w : [B/sentence 2]
valeur de w : [C/sentence 3]
valeur de v : Fonctionnel
valeur de w : [A/sentence 4]
valeur de w : [B/sentence 5]
valeur de w : [C/sentence 6]
valeur de v : Securite
valeur de w : [A/sentence 7]
valeur de w : [B/sentence 8]
valeur de w : [C/sentence 9]
valeur de v : Fonctionnel
valeur de w : [A/sentence 10]
valeur de w : [B/sentence 11]
valeur de w : [C/sentence 12]
valeur de v : Technique
valeur de w : [A/sentence 13]
valeur de w : [B/sentence 14]
valeur de w : [C/sentence 15]
valeur de v : Securite
valeur de w : [A/sentence 16]
valeur de w : [B/sentence 17]
valeur de w : [C/sentence 18]
我认为问题出在这一行:
Z = Split(Trim(c.Offset(0, -2).Value))
但我不知道如何解决。
感谢您的帮助!
【问题讨论】:
-
以下答案可能对您有所帮助:excel vba- extract text between 2 characters
-
split在这种情况下不起作用。而是使用正则表达式来获取 [] 之间的值。类似Set regEx = CreateObject("VBScript.RegExp") regEx.Pattern = "\[(.*?)\]" Set matches = regEx.Execute(Trim(c.Offset(0, -2).Value)) -
谢谢大家的回答,我今天下午试试
-
@Maddy Split 可以与第二次吐痰结合使用,以针对特定部位。您可以在 2 个拆分之间trap 特定文本。