巧妙提取文件中的指定内容

  • 来源:PC电脑王
  • 关键字:Word,VBA代码,提取指定内容
  • 发布时间:2014-09-05 16:30

  Excel 2013,这个版本提供了强大的“快速填充”功能,但由于样本工作表的中文内容位置并不规范,因此在使用快速填充之后并没有得到满意的结果,难道只能手工提取吗?其实我们可以换一种思路来解决。

  巧妙提取工作表的中文名称同事小秦前来求助,她需要将工作表各个单元格的中文名称提取出来,但样本工作表的中文内容位置并不规范,在使用快速填充之后并没有得到满意的结果。

  方法一:通过Word进行中转将工作表复制之后粘贴到Word窗口,粘贴时请选择“保留源格式”,按下“Ctrl+H”组合键打开“查找和替换”对话框,切换到“替换”选项卡,点击“更多”按钮切换到高级模式,查找内容设置为“[^1-^127]”,这里的“[^1-^127]”表示所有西文字符,“替换为”不需要填写内容,勾选“使用通配符”复选框,点击“全部替换”,最后再将提取出来的内容粘贴回Excel工作表即可。

  方法二:利用VBA代码

  按下“Alt+F11”组合键,打开Microsoft Visual Basic for Applications窗口,依次选择“插入/模块”,在右侧窗格插入一个空白模块,输入如下代码:

  Sub test()

  Dim reg, m

  Set reg = CreateObject(“VBScript.RegExp”)

  reg.Global = True

  reg.Pattern = “[A-Z]?[^!-~(]+”

  For Each m In [A1:A24]

  Cells(m.Row, “C”) = reg.Execute(m)(0)

  Next m

  End Sub

  上述代码中的“test”可以任意更改,检查无误之后,选择“文件/关闭并返回到Microsoft Excel”命令,返回Excel主界面,按下“Alt+F8”组合键,打开“宏”对话框,选择并运行“test”宏,很快就可以完成中文名称的提取,如果需要将提取的内容放在其他列,可以更改“ Cells(m.Row,“C”)”的“C”。

  巧妙提取单元格中的指定内容

  同事前来求助,他希望将A列的数字代码和文字科目分别提取到B列、C列,如果采取纯手工的方法,操作相当繁琐。其实,我们利用公式即可解决上述问题。

  在B 1 单元格输入数组公式:=-LOOKUP(1,-LEFT(A1,ROW($1:$15))),输入完成之后在编辑栏按下“Ctrl+Shift+Enter”组合键,可得“119301”的结果,拖拽填充柄;在C1单元格输入公式:=SUBSTITUTE(A1,B1,),执行之后可得“往来中转/通邮赔”的结果,拖拽填充柄。

  其实,我们还可以利用Excel 2013的“快速填充”功能实现:在B1单元格手工输入“119301”,选中B列的相应单元格区域,切换到“数据”选项卡,单击“数据工具”功能组的“快速填充”按钮,按照类似的步骤可以提取A列单元格的文字科目,较使用公式更为简单。

  文/大江东去

……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: