从 Excel 中的 1 个大单元格中提取项目

从 Excel 中的 1 个大单元格中提取项目

我有一张巨大的电子表格,记录了 PC 及其上安装的软件。
不幸的是,报告在一个单元格中列出了 PC 上安装的所有软件。

我需要一个公式或宏来遍历单元格中的每个软件并提取包含该词的所有软件微软并将其放入同一行下一列的新单元格中。它必须对找到的每个项目执行此操作,以便安装的每个 Microsoft 产品都出现在第一行的单独单元格中。

我尝试了各种方法,但不确定如何让它输出每个实例。我假设它需要某种数组和循环,但不知道该怎么做。

如果需要更多信息,请告诉我。
非常感谢您的帮助。

软件单元如下所示:

“Adobe Flash Player 10 插件 | 10.3.181.26”;“Adobe Flash Player 11 ActiveX 64 位 | 11.0.1.152”;“Adobe Reader 9.4.6 | 9.4.6”;“Altiris 部署代理 | 1.0.0”;“BigFix Enterprise Client | 7.2.5.22”;“Citrix Access Gateway 插件 | 4.6.1.2700”;“Citrix Password Manager 插件 | 4.6.264.0”;“Citrix XenApp Web 插件 | 11.0.0.5357”;“Microsoft Office 2010 定义更新 (KB982726)”;“Intel(R) 图形媒体加速器驱动程序”;“JXplorer | 3.2.2”; “Java(TM) 6 Update 16 | 6.0.160”;“McAfee Agent | 4.5.0.1852”;“McAfee AntiSpyware Enterprise Module | 8.7.0.129”;“McAfee Encrypted USB Client | 1.5.0”;“McAfee VirusScan Enterprise | 8.7.0”;“Microsoft .NET Framework 4 Client Profile | 4.0.30319”;“Microsoft Application Virtualization Desktop Client | 4.6.0.1523”;“Microsoft Conferencing Add-in for Microsoft Office Outlook | 8.0.6362.187”;“Microsoft Office Communicator 2007 | 2.0.6362.189”;“Microsoft Office InfoPath MUI (English) 2010 | 14.0.4763.1000”; “Microsoft Office Live Meeting 2007 | 8.0.6362.187”;“Microsoft Office Professional Plus 2010 | 14.0.4763.1000”;“Microsoft Office Visio 2007 Service Pack 2 (SP2)”;“Microsoft Office Visio Professional 2007 | 12.0.6425.1000”;“适用于 2007 Microsoft Office 程序的 Microsoft Save as PDF 或 XPS 加载项 | 12.0.4518.1014”;“Microsoft Silverlight | 4.0.60831.0”;“Microsoft Sync Framework Runtime v1.0 (x86) | 1.0.1215.0”;“Microsoft Sync Framework Services v1.0 (x86) | 1.0.1215.0”; “Microsoft Visual C++ 2005 可再发行组件 - KB2467175 | 8.0.51011”;“Microsoft

答案1

这应该可以完成工作,只需替换工作表和范围:

Sub ExtractSoftware()
    Dim ws 作为工作表    
    Dim lngRow 为 Long
    Dim rngSource 作为范围
    调光范围
    Dim varElement 作为变体

    设置 ws = Sheets(“YourSheet”)
    对于 lngRow = 1 到 ws.Range("A1000000").End(xlUp).Row
        设置 rngSource = ws.Cells(lngRow, 1)
        设置 rng = rngSource.Offset(, 1)

        对于 Split(rngSource.Value, “;”) 中的每个 varElement
            如果 InStr(varElement, “Microsoft”) 那么
                变量元素 = 修剪(变量元素)
                rng.Value = Mid(varElement, 2, Len(varElement) - 2)
                设置 rng = rng.Offset(, 1)
            万一
        下一个 varElement
    下一 lngRow

子目录结束

答案2

Find and Replace我会使用、 和的组合Text to Columns

  1. 将相关列复制到行尾。我们将替换部分数据,因此在第二列中执行此操作可避免在犯错时丢失数据。(双重保障!)

  2. 使用Find and Replace函数替换所有实例微软有两个特殊字符,在本专栏的其他地方找不到。我经常使用¬`因为它们很少使用,所以你要替换微软¬`

  3. 现在使用Text to Columns数据选项卡上的功能。将分隔符设置为第一个特殊字符:¬。现在您应该会得到以 Microsoft 项目为前缀的单元格。但是,后面还有许多其他内容。

  4. 要删除这些无关的内容,请选择包含此信息的所有列,然后执行另一次Find and Replace。找到这个:;*并将其替换为空(保持文本框为空)。这样应该会删除您不想要的任何非 Microsoft 内容。

  5. Find and Replace最后,您可以通过执行以下操作重新添加 Microsoft 标签`并将其改回微软

  6. 您可能有一些未结清的尾随标志。使用另一个标志Find and Replace将其移除。

一旦您习惯了像这样破解信息,您就可以很快地做到这一点,相信我!

相关内容