如何按特定字符串对单词表进行排序,该字符串在第一列的每一行中都是类似HH:MM的时间



我有一个word文档,里面有三个表(如下面的表(,我需要根据第一列每行内的小时数(遇到的第一个时间引用(对其进行排序。如果我应用盲排序,比如:

ActiveDocument.Tables(1).Sort ExcludeHeader:= true, SortOrder:=wdSortOrderAscending

在一个不是以时间引用开始,而是以其他单词作为时间的表上,这种类型的排序将无法满足我的需要。它只考虑每行中发现的第一个单词。有人能对如何解决这个问题有一些想法吗?举个例子,考虑这样一个表:

描述

HEADER1 HEADER2
±s 11.00 iniciou.se a do Gr.#da NNN F
±s 16.18是法国队的一员 G
Das 07.05às 16.57 a Bateria de Condensadores#da CCC K
Das 07.22às 16.24是KKK 400 kV IBBP的一部分 D
Das 08.10às 16.58 a do disjuntor#do módulo##do PPPPP Y
Das 08.27às 17.34为220 kV da LLLL的IBBP S
上午9点开始 H
Das 10.00às 14.59 os Gr.#,Gr.#e Gr.#da VVV R
Das 10.04às 19.16 a Reactância Shunt da GGGG H
Das 14.00às 15.23 o Gr.#e Das 14.00às 16.11 o Gr.#da HHH U
Das 14.00às 16.55 o Gr.#da MMM A

例如:

Sub Demo()
Application.ScreenUpdating = False
Dim Tbl As Table, r As Long
For Each Tbl In ActiveDocument.Tables
With Tbl
.Columns.Add beforecolumn:=.Columns(1)
For r = 2 To .Rows.Count
.Cell(r, 1).Range.Text = .Cell(r, 2).Range.Words.First
.Cell(r, 2).Range.Words.First.Text = vbNullString
Next
.Sort ExcludeHeader:=True, FieldNumber:="Column 2", _
SortFieldType:=wdSortFieldAlphanumeric, _
SortOrder:=wdSortOrderAscending
For r = 1 To .Rows.Count
.Cell(r, 1).Merge Mergeto:=.Cell(r, 2)
.Cell(r, 1).Range.Paragraphs.First.Range.Characters.Last.Text = vbNullString
Next
End With
Next
Application.ScreenUpdating = True
End Sub

最新更新