1

有没有办法找到包含“日期”的单元格并运行 TextToColumns 宏?而不是引用列“H”或“J”和/或等等......

最终,我试图将包含“~ Date”的大约 5 列更改为 TextToColumn。而且它并不总是在“H”列上。

非常感谢您的专业知识

Columns("H:H").Select
    Selection.TextToColumns Destination:=Range("H1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(1, 5), TrailingMinusNumbers:=True
4

1 回答 1

1

假设要在第 1 行的列标题中找到“日期”值,下面的代码应该可以解决问题。

它的工作原理如下:

  • 在第 1 行中找到最右边的列标题

  • 遍历第一个到最后一个标题

  • 在每个标题单元格中搜索字符串“日期”

    -- 如果没有找到,转到下一个标题单元格

    -- 如果找到,则将该标题的日期列的文本值转换为列并转到下一个标题单元格

请注意,我Selects从代码中删除了 ,这不是进行转换所必需的。

您的描述不清楚“日期”标题列的右侧是否有足够的空白列来保存拆分数据而不覆盖其他现有数据。此过程假定有足够的空间。因此,如果右侧的单元格中有数据,Excel 将显示一个对话框,询问您是否要覆盖相邻的单元格。如果没有,并且需要插入其他列,请修改您的问题以使其清楚。

  Sub txttocol()

      Dim ws As Sheet1
      Dim rng As Range
      Dim lastCol As Long
      Dim i As Long

      Set ws = Worksheets("Sheet1")
      With ws
          lastCol = .Cells(1, .Columns.Count).End(xlToLeft).Column
          For i = 1 To lastCol
              If InStr(UCase(.Cells(1, i).Value), UCase("date")) <> 0 Then
                  Set rng = .Range(Columns(i), Columns(i))
                  rng.TextToColumns Destination:=rng, DataType:=xlDelimited, _
                      TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
                      Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
                      :=Array(1, 5), TrailingMinusNumbers:=True
              End If
          Next i
      End With
  End Sub
于 2013-06-11T19:53:36.207 回答