Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba Excel宏-如何为合并列将包装的文本拆分为行?_Vba_Excel_Merge_Split - Fatal编程技术网

Vba Excel宏-如何为合并列将包装的文本拆分为行?

Vba Excel宏-如何为合并列将包装的文本拆分为行?,vba,excel,merge,split,Vba,Excel,Merge,Split,我必须将数据从PDF导入SAS,其中一个步骤是将PDF数据转换为excel电子表格,然后再转换为文本以简化SAS导入。通常,PDF数据可以很好地转换为excel,错误很少。当我试图导入较旧的数据时,数据变得非常混乱,一些行被包装在一个单元格中。我试图弄清楚是否有一个宏可以帮助我在没有太多手动操作的情况下修复工作表中的错误。我以前从未用VBA编程,所以我对excel宏很陌生 下面是混乱数据的示例: 以下是正常数据的示例: (*请注意,两个图像中的数据值是不同的,例如格式设置) 我试过在宏上工作

我必须将数据从PDF导入SAS,其中一个步骤是将PDF数据转换为excel电子表格,然后再转换为文本以简化SAS导入。通常,PDF数据可以很好地转换为excel,错误很少。当我试图导入较旧的数据时,数据变得非常混乱,一些行被包装在一个单元格中。我试图弄清楚是否有一个宏可以帮助我在没有太多手动操作的情况下修复工作表中的错误。我以前从未用VBA编程,所以我对excel宏很陌生

下面是混乱数据的示例:

以下是正常数据的示例:

(*请注意,两个图像中的数据值是不同的,例如格式设置)

我试过在宏上工作。为此,我将杂乱的数据复制到另一个工作表中,并运行宏,该宏在单独的工作表上输出更正的数据,然后将更正的数据复制到原始电子表格中杂乱的数据上。 在尝试编写宏代码之后,我无法理解如何告诉excel获取C、D、E、F列中的数据,这些列都合并到一个单元格中,并对其他合并列(如凌乱的数据图像所示)断开包装文本,以此类推。 以下是我在观看了一些教程后得到的当前代码:

Sub Split_Text_to_Rows()
Dim splitVals1 As Variant
Dim splitVals2 As Variant

Dim totalVals As Long

Set sh1 = ThisWorkbook.Sheets(2)
Set sh2 = ThisWorkbook.Sheets(3)

sh2.Cells.Clear
lrow1 = sh1.Range("A65356").End(xlUp).Row

For j = 1 To lrow1

splitVals1 = Split(sh1.Cells(j, 1), Chr(10))
splitVals2 = Split(sh1.Cells(j, 2), Chr(10))

    For i = LBound(splitVals1) To UBound(splitVals1)
        lrow2 = sh2.Range("A65356").End(xlUp).Row
        sh2.Cells(lrow2 + 1, 1) = splitVals1(i)
    Next i

    For k = LBound(splitVals2) To UBound(splitVals2)
        lrow3 = sh2.Range("B65356").End(xlUp).Row
         sh2.Cells(lrow3 + 1, 2) = splitVals2(k)
    Next k

Next j

End Sub
正如你所看到的,我的代码也相当混乱。虽然我得到了A列和B列的代码,但当我进入C列-“机动车盗窃”等时,我不确定如何分离包装文本,因为它们合并在C、D、E、F列中。我还希望在宏将1行拆分为2行(如正常数据图像所示)后,将I列到Q列保留为两个合并行然后继续拆分单元格,直到Z列。
任何提示都会有帮助!如果需要更多信息或澄清,请告诉我

我经常发现,最好的方法是首先将数据粘贴到Word中,在那里进行一些清理,将其格式化为Word表格,然后将其转换为Excel。原因是Word具有非常强大的查找/替换功能,可以让您快速将混乱转化为合理的东西。由于您没有提供我可以粘贴的示例数据,我在web上随机找到一个pdf来显示一种方法。本例中的关键是注意到每一列都以空格开头,后跟一个数字。因此,我搜索了“^#”(后跟“任意数字”的空格),并将其替换为“^t”(制表符)。接下来,我使用了Word的“转换为表”功能,然后数据表就可以粘贴到Excel中了


我经常发现最好的方法是首先将数据粘贴到Word中,在那里进行一些清理,将其格式化为Word表格,然后将其转换为Excel。原因是Word具有非常强大的查找/替换功能,可以让您快速将混乱转化为合理的东西。由于您没有提供我可以粘贴的示例数据,我在web上随机找到一个pdf来显示一种方法。本例中的关键是注意到每一列都以空格开头,后跟一个数字。因此,我搜索了“^#”(后跟“任意数字”的空格),并将其替换为“^t”(制表符)。接下来,我使用了Word的“转换为表”功能,然后数据表就可以粘贴到Excel中了


合并单元格不是很有趣吗?只要有可能,我就尽量避开他们。关于合并
C4:E4
,所有数据都将在
C4
(合并区域的左上角单元格)中,所以这就是您需要查看并确定如何拆分它的全部内容。@RonRosenfeld--Oh!我使用左上角的单元格作为合并区域进行拆分,并在更改变量名称时复制了代码,这很有效!谢谢现在,我正试图找出如何将需要合并的4列输出到我可以简单地复制和替换整个“混乱”的数据子选择。有什么想法吗?我一点也不清楚你想如何处理结果。按换行符拆分C4中的数据是很简单的,就像您正在做的那样。我建议避免合并单元格。所以我会把每一个单独列成一行;您将有一堆空白列,但您可以通过格式化来处理。你可能需要在不同的行中重复输入,这取决于你希望事情在最后的结果;同样,你应该能够通过在单元格中居中(不合并)和删掉一些条目(字体与背景颜色相同)来让事情如你所愿地出现。合并的单元格不是很有趣吗?只要有可能,我就尽量避开他们。关于合并
C4:E4
,所有数据都将在
C4
(合并区域的左上角单元格)中,所以这就是您需要查看并确定如何拆分它的全部内容。@RonRosenfeld--Oh!我使用左上角的单元格作为合并区域进行拆分,并在更改变量名称时复制了代码,这很有效!谢谢现在,我正试图找出如何将需要合并的4列输出到我可以简单地复制和替换整个“混乱”的数据子选择。有什么想法吗?我一点也不清楚你想如何处理结果。按换行符拆分C4中的数据是很简单的,就像您正在做的那样。我建议避免合并单元格。所以我会把每一个单独列成一行;您将有一堆空白列,但您可以通过格式化来处理。你可能需要在不同的行中重复输入,这取决于你希望事情在最后的结果;同样,您应该能够通过在单元格中居中(无需合并)和删除一些条目(字体与背景颜色相同)使内容按您的意愿显示。