Excel VBA-在空白处拆分范围内的字符串,并考虑该范围内的所有单元格

Excel VBA-在空白处拆分范围内的字符串,并考虑该范围内的所有单元格,excel,vba,loops,split,delimiter,Excel,Vba,Loops,Split,Delimiter,我正在从pdf中提取许多表,这些表需要导入到数据库中。由于提取,有些结果相当糟糕 我希望有一个VBA脚本,它可以循环遍历工作表中包含字符串的所有单元格,并在空白处拆分这些单元格,以便从单元格中删除空格后的任何值,并将其放入右侧相邻的单元格中 我已经研究了结合循环的拆分函数,但是我被卡住了,因为我的VBA知识非常少。看起来您正在努力获得答案,所以我很乐意尝试并提供帮助 在VBA项目中创建新模块并添加以下代码 Public Sub SplitCells() Dim rngSrcData A

我正在从pdf中提取许多表,这些表需要导入到数据库中。由于提取,有些结果相当糟糕

我希望有一个VBA脚本,它可以循环遍历工作表中包含字符串的所有单元格,并在空白处拆分这些单元格,以便从单元格中删除空格后的任何值,并将其放入右侧相邻的单元格中


我已经研究了结合循环的拆分函数,但是我被卡住了,因为我的VBA知识非常少。

看起来您正在努力获得答案,所以我很乐意尝试并提供帮助

在VBA项目中创建新模块并添加以下代码

Public Sub SplitCells()
    Dim rngSrcData As Range, objDestSheet As Worksheet, lngRow As Long
    Dim lngCol As Long, arrSplit, arrData(), lngWriteRow As Long, lngIndex As Long
    Dim strDelimiter As String, i As Long, strWriteRange As String

    Set rngSrcData = Selection
    Set objDestSheet = Worksheets("Output")
    strDelimiter = " "

    objDestSheet.Cells.Clear

    With rngSrcData
        For lngRow = 1 To .Rows.Count
            lngIndex = 0

            For lngCol = 1 To .Columns.Count
                arrSplit = Split(CStr(.Cells(lngRow, lngCol)), strDelimiter, , vbTextCompare)

                For i = 0 To UBound(arrSplit)
                    ReDim Preserve arrData(lngIndex)
                    arrData(lngIndex) = arrSplit(i)

                    lngIndex = lngIndex + 1
                Next
            Next

            lngWriteRow = lngWriteRow + 1

            strWriteRange = .Cells(lngWriteRow, 1).Address & ":" & .Cells(lngWriteRow, UBound(arrData) + 1).Address
            objDestSheet.Range(strWriteRange) = arrData
        Next
    End With
End Sub
。。。与上述内容一起,在工作簿中创建一个新工作表,并将其命名为“输出”。这是转换数据的目的地

现在选择整个数据范围(如屏幕截图所示),然后运行宏

检查你的“输出”表,你应该看到你的结果


我希望它对您有用。

您可能希望查看“文本到列”是的,我考虑过,但正如您在图像中看到的,整个列中的空格并不总是相同的,因此它将覆盖其他单元格。这就是为什么我认为有必要对单个单元格进行循环。在示例图像中,您需要将最后一列中最底部的六个单元格(四行)复制到右侧,所以在将文本应用到列之前的行之前,请执行此操作。我每天提取PDF文件——没有无痛的方法可以做到这一点……使用文本对列进行分隔。选择空格作为分隔符,并选择其他。将一个不间断的空格放到另一个空格中。将Teat连续分隔符用作一个分隔符。在这种情况下,它不起作用,请参见图。此外,我有很多这样的脚本,所以我想使用VBA脚本。