TextToColumns破坏已经拆分为单元格的数据

时间:2018-01-02 09:19:10

标签: excel vba excel-vba text-to-column

我的问题:
我有一本工作簿,在其中,我有三张不同的工作表。表1是PDF文件中的一些数据,我想在其中使用TextToColumns。表2包含来自我们的财务数据库的数据,而它已经分成了单元格。表3比较了表1和表2中的两组数据。

我用于将文本拆分为列的代码

    Dim sht, sht2, sht3 As Worksheet
    Set sht = Sheets("PDF")
    Set sht2 = Sheets("Finance")
    Set sht3 = Sheets("Compare")

FindDate21 = sht.Range("1:1").Find("Bookkeeping Date", LookAt:=xlWhole).Address(False, False, xlA1)
DateSub = sht.Application.WorksheetFunction.Substitute(FindDate21, 1, "")
FindDateOffset = sht.Range(FindDate21).Offset(1, 0).Address(False, False, xlA1)
LastRowDateSub = sht.Cells(sht.Rows.Count, DateSub).End(xlUp).Row

rng1 = FindDateOffset & ":" & DateSub & LastRowDateSub

    sht.Range(rng1).TextToColumns Destination:=Range("A2"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
            Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
            :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), _
            Array(6, 1), Array(7, 1), Array(8, 1))

我的问题是:

在撰写本文时,我在Sheet 1中的数据是完美的,但是Sheet 2中的数据已经毁了。从插入16个不同的列,它被缩短为3列。如何获得TextToColumns效果,以免干扰我在Sheet 2中粘贴的数据?我可以反转TextToColumns的效果,而不会改变它对Sheet 1中数据的影响吗?

1 个答案:

答案 0 :(得分:0)

我现在找到了解决问题的方法。我可以在Sheet 1和Sheet 2上插入一个宏。Sheet 1应用TextToColumns函数,Sheet 2再次反转它。

工作表1上的宏:

    Private Sub Worksheet_Activate()

Dim sht As Worksheet
Dim LastRow As Long
Set sht = Sheets("PDF Data")

LastRow = sht.Cells(sht.Rows.Count, "A").End(xlUp).Row
rng1 = "A1:A" & LastRow

sht.Range(rng1).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=False, _
        Semicolon:=False, Comma:=False, Space:=True, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1))


End Sub

第2页上的宏:

Private Sub Worksheet_Activate()

Dim sht2 As Worksheet
Dim LastRow As Long
Set sht2 = Sheets("Financial Data")

LastRow = sht2.Cells(sht2.Rows.Count, "A").End(xlUp).Row
rng1 = "A1:A" & LastRow

sht2.Range(rng1).TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=True, Tab:=True, _
        Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
        :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1))


End Sub