![从 Excel 中的 1 个大单元格中提取项目](https://linux22.com/image/1347807/%E4%BB%8E%20Excel%20%E4%B8%AD%E7%9A%84%201%20%E4%B8%AA%E5%A4%A7%E5%8D%95%E5%85%83%E6%A0%BC%E4%B8%AD%E6%8F%90%E5%8F%96%E9%A1%B9%E7%9B%AE.png)
我有一张巨大的电子表格,记录了 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
。
将相关列复制到行尾。我们将替换部分数据,因此在第二列中执行此操作可避免在犯错时丢失数据。(双重保障!)
使用
Find and Replace
函数替换所有实例微软有两个特殊字符,在本专栏的其他地方找不到。我经常使用¬和`因为它们很少使用,所以你要替换微软和¬`。现在使用
Text to Columns
数据选项卡上的功能。将分隔符设置为第一个特殊字符:¬。现在您应该会得到以 Microsoft 项目为前缀的单元格。但是,后面还有许多其他内容。要删除这些无关的内容,请选择包含此信息的所有列,然后执行另一次
Find and Replace
。找到这个:;*并将其替换为空(保持文本框为空)。这样应该会删除您不想要的任何非 Microsoft 内容。Find and Replace
最后,您可以通过执行以下操作重新添加 Microsoft 标签`并将其改回微软。您可能有一些未结清的尾随“标志。使用另一个标志
Find and Replace
将其移除。
一旦您习惯了像这样破解信息,您就可以很快地做到这一点,相信我!