我有一个excel文件,其字符串不能超过60个字符。某些字符串受<br>
限制,而其他字符串则使用<break>
。例如,我有这个单元格:
Lorem ipsum dolor sit amet, consectetur adipiscing elit.<br> Lorem
ipsum dolor sit amet, consectetur adipiscing elit. Aliquam amet.<br>Lorem ipsum dolor
sit amet, consectetur adipiscing elit. Nulla eu sed.<break>Lorem ipsum dolor sit
amet, consectetur adipiscing elit.<br>
我想要excel或Notepad ++来突出显示超过60个字符的标签之间的字符串,是否有任何&#34; easy&#34;这样做的方法?
谢谢!
答案 0 :(得分:0)
在Excel中,您可以尝试这个小VBA代码:
Private Sub CommandButton1_Click()
Dim search_area As String
search_area = "B3:B8"
Dim separator As String
separator = "<br>"
Dim lengthLimit As Long
lengthLimit = 60
Dim text As Variant
Dim i As Long
Dim col As Long
Dim row As Long
For Each cell In ActiveSheet.range(search_area).Cells
row = cell.row
col = cell.Column + 1
text = Split(cell, separator, -1)
For i = 0 To UBound(text)
If (Len(text(i)) > lengthLimit) Then
ActiveSheet.Cells(row, col) = text(i)
col = col + 1
End If
Next
Next
End Sub
请参阅此录制内容,了解如何将其与Excel集成 https://dl.dropboxusercontent.com/spa/ymse6uo5hhtvqry/vba.gif
假设长文本在B3:B8范围内,如果在
标签内有超过60个字符,那么该文本将显示在B列旁边的列中。
答案 1 :(得分:0)
对于Notepad ++ 我恐怕无法找到否定符号组合的方法。你不能使用:
^(<br>|<break>)
所以我能想到的最好的事情就是做这样的事情:
.{60}(<br>|<break>)
然而,如果它最终以br / break结束,但在中断前有60个其他字符,则只会突出显示该行。如果最后没有中断,则该行不会突出显示。
你也可以检查\ n这是否足够好:
.{60}(<br>|<break>|\n)
要突出显示只需按Ctrl + F,请切换到标记选项卡,将搜索模式设置为正则表达式并点击全部标记(不要忘记清除以前的标记)
这是我用Notepad ++可以想到的最佳选择,而且只需要很少的努力。
答案 2 :(得分:0)
由于您使用正则表达式和 excel 对其进行了标记,因此这是一个使用正则表达式突出显示单元格中长短语的VBA宏。我假设你上面的例子都在一个单元格中。每个超过60个字符的子字符串将突出显示(交替)红色或绿色。宏在选择的单元格上运行。它可以修改为在其他范围内运行。
编辑 代码更改为仅突出显示标记之间字符串的部分。在突出显示起始标记之前
Option Explicit
Sub HiglightGT60()
Dim S As String
Dim R As Range, C As Range
Dim RE As Object, MC As Object, M As Object
Const MaxLen As Long = 60
Dim bColorFlag As Boolean
Set R = Selection
Set RE = CreateObject("vbscript.regexp")
With RE
.Global = True
.Pattern = "(^|<br>|<break>)((?!<br>|<break>)[\s\S]){" & MaxLen + 1 & ",}"
.MultiLine = False
End With
For Each C In R
C.Font.Color = vbBlack
S = C.Text
If RE.test(S) = True Then
Set MC = RE.Execute(S)
For Each M In MC
C.Characters(M.firstindex + 1 + Len(M.submatches(0)), _
M.Length - Len(M.submatches(0))) _
.Font.Color = IIf(bColorFlag, vbRed, vbGreen)
bColorFlag = Not bColorFlag
Next M
End If
Next C
End Sub
我不知道 Notepad ++ ,但我认为正则表达式类似