在 Excel 中重新格式化数据

在 Excel 中重新格式化数据

这是一个复杂的问题,涉及多个步骤。

我有一位客户,他有一些信息需要作为注释导入到 Salesforce。

他们是相对地格式如何,他们不做任何限制。只要信息存在,并且特定帐户可以访问,他们就很高兴。

Salesforce 导入注释要求注释位于一列中。问题在于,与主 excel 文件不同的注释文件中实际上有大约 3,000 个不同的注释行。这些注释行中的每一个都按以下格式组织:

ABC Company
Called ABC Company
Had a meeting with ABC Company's Dave at lunch on Friday
Did XYZ with ABC Company


DEF Incorporated
Met DEC Executive while golfing
Sold 30 widgets to DEC yesterday

基本上,公司名称,后跟与该公司相关的可变数量的行,后跟两行空白,后跟另一家公司等等,直到文件末尾。

所以我需要:

在组内的第一行之后为每一行创建一个单独的列,如下所示:

Called ABC Company | Had a meeting with ABC Company's Dave at lunch on Friday | Did XYZ with ABC Company


Met DEC Executive while golfing | Sold 30 widgets to DEC yesterday

并根据组的第一行,将其与第一个 excel 文件中的 a 列进行匹配。

或者我必须想出其他更有效的方法来做到这一点。

答案1

这很令人困惑(例如“这些注释行中的每一行都按以下格式组织:”但示例看起来是柱状的,并且上一个示例的第二部分缺少公司名称),因此,只能猜测:

  1. 复制数据并以未格式化的形式粘贴到 Word 中。
  2. 全选并用一些独特的东西(zzz?)替换^p^p
  3. 将 ^p 替换为 ^t。
  4. 将 zzz^t 替换为 ^p
  5. 重新导入 Excel。

答案2

诀窍是确保数据确实有规律。如果每条记录正好是 4 行,中间由一些空行隔开,那么就万事大吉了,如果行数不同,您可能需要调整以下步骤。虽然我通常会直接编写宏,但只需使用 Excel 中的常规公式即可重新格式化这些数据。

步骤 1.
在所有数据的左侧插入一个新列,并在数据上方插入一个空白行(即,您的数据现在从 ​​B2 开始,并且 A 列全部为空白)

步骤 2. 使用公式标记每条记录的开始。在 A2 中插入以下公式。使用填充功能将此公式复制到整个电子表格中

=IF(AND(ISBLANK(B1)*NOT(ISBLANK(B2))),"START","")

您的数据现在如下所示:

START   ABC Company
        Called ABC Company
        Had a meeting with ABC Company's Dave at lunch on Friday
        Did XYZ with ABC Company


START   DEF Incorporated
        Met DEC Executive while golfing
        Sold 30 widgets to DEC yesterday

步骤 3.现在我们可以编写一个公式来合并 C 列(或更靠右)中的所有内容

=IF(A2="START",CONCATENATE(B2,"|",B3,"|",B4,"|",B5),"")

您的 C 列最终将如下所示:

ABC Company|Called ABC Company|Had a meeting with ABC Company's Dave at lunch on Friday|Did XYZ with ABC Company





DEF Incorporated|Met DEC Executive while golfing|Sold 30 widgets to DEC yesterday|

步骤 4. 全选、复制、选择性粘贴 - 仅限值

步骤 5. 对 C 列进行排序,使空白行落到底部,复制并粘贴到文本文件中,即可将其加载到 Salesforce。

答案3

而且总是有宏选项。以下假设 1) 您的数据全部在第 1 列中,2) 您的每家公司之间都用空白行分隔。请随意评论需要进行的调整。

您可能希望在运行此操作之前创建工作表的副本。

子重新包装()

    Dim lRow 为 Long
    Dim lDropRow 为 Long
    常量 iCol = 1

    删除行 = 1
    l行 = 2

        ' 检查空白条目 - 表示新公司
        如果 Cells(lRow, iCol) = "" 那么

            lDropRow = lRow
            行(lRow).删除

            行数 = 行数 + 1

        别的

            ' 注释已确认 - 将注释汇总到一行中
                单元格(lDropRow,256).End(xlToLeft).Offset(0,1)= Trim(单元格(lRow,iCol))
                行(lRow).删除
            循环直到单元格(lRow,iCol)=“”

        万一

    循环直到 lRow > Cells(65536, iCol).End(xlUp).Row

子目录结束

相关内容