比较MS Word表格列中的值,合并单元格并删除重复值

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了比较MS Word表格列中的值,合并单元格并删除重复值相关的知识,希望对你有一定的参考价值。

我最初在2017年5月在Microsoft社区中提出了这个问题,我曾使用此代码修改表结构:

Sub TableDateCleaner()
  Application.ScreenUpdating = False
  Dim r As Long, bFit As Boolean
  With ActiveDocument.Tables(2)
    bFit = .AllowAutoFit
    .AllowAutoFit = False
    For r = .Rows.Count To 2 Step -1
      If Trim(Split(.Cell(r, 1).Range.Text, vbCr)(0)) = _
         Trim(Split(.Cell(r - 1, 1).Range.Text, vbCr)(0)) Then
           .Cell(r, 1).Range.Delete
           .Cell(r, 1).Merge .Cell(r - 1, 1)
           .Cell(r, 2).Merge .Cell(r - 1, 2)
      End If
    Next
    With .Range.Find
      .ClearFormatting
      .Replacement.ClearFormatting
      .Text = "^p"
      .Replacement.Text = ", "
      .Format = False
      .Forward = True
      .Wrap = wdFindStop
      .MatchCase = False
      .MatchWholeWord = False
      .MatchWildcards = False
      .MatchSoundsLike = False
      .MatchAllWordForms = False
      .Execute Replace:=wdReplaceAll
    End With
    AllowAutoFit = bFit
    .Rows.HeightRule = wdRowHeightAuto
  End With
  Application.ScreenUpdating = True
  Call LowerCaseAfterComma 'Call next Macro so formatting done in one process
End Sub

但是,我的客户端现在使用不同的软件来生成多个表,这个宏最初用于第二个命名表,因此ActiveDocument.Tables(2)。将新表标识为第6个命名表后,我修改了代码并将其替换为ActiveDocument.Tables(6)。

虽然我将宏修改为此效果,但我现在得到'运行时错误5941集合的请求成员不存在',并且从'如果修剪....'开始的代码以黄色突出显示错误。所以,我假设它正在寻找一个不再存在的ActiveDocument.Tables中的对象,这听起来很奇怪,但我不知道那是什么。

我只是一名兼职编码员,所以我想了解一下我可能出错的地方。我正在使用Word 2016。

答案

如果您指定了正确的表索引(例如6而不是2)并且表结构相同(即每行两列),则无论您关注哪个表,代码都应该完全相同。除了你的代码缺乏结构,我能看到的唯一错误是AllowAutoFit = bFit缺少开始句点(即.AllowAutoFit = bFit)。理想情况下,在Application.ScreenUpdating = True之前,您还有Call LowerCaseAfterComma。

以上是关于比较MS Word表格列中的值,合并单元格并删除重复值的主要内容,如果未能解决你的问题,请参考以下文章

怎么将两个EXCEL表格合并后去除重复数据

C#Winform中DataGridView合并单元格的问题?

js怎么合并单元格并相加

el-table合并单元格并可编辑表格下拉选择

为啥考核表用word不用excel

project里如何将单元格中的字体居中?