vba - 在工作表 1 的 A 列中搜索一个值,将其复制到工作表 2,然后复制接下来的三行
问题描述
我有一份 100 多页的文件,其中包含有关我们组织的潜在资助者的信息。我想制作一个 Excel 宏,从该文档中提取联系人信息并将其放入 Excel 电子表格中。这是文档的样子:
地址分散在文本中,我一直在将它们复制并粘贴到 Excel 中,但由于地址位于多行上,因此它粘贴到电子表格的多行中。然后我需要手动将该字符串解析为可用的格式。
我想做的是有一个宏来搜索单词"Contact"
,然后在同一列中获取接下来的三行(因此为什么VLookUp
对我不起作用)并将它们解析为不同的正常地址格式一行的列。
我想要一个可以变成这样的宏:
A
1: Contact:
2: Kate Bull
3: 123 High Road, Whetstone, London
4: N20 8HL
进入这个:
A B C D E
1: Kate Bull 123 High Street Whetstone London N20 8HL
解决方案
用逗号分隔示例字符串将产生 3 个字符串:
Contact: Kate Bull 123 High Road
Whetstone
London N20 8HL
实施
- 在excel文件上
A1 = Original String
,,,,B1 = Contact
C1 = State
D1 = Country/Zip
- 把你的字符串粘贴
A2
下来 - 打开 VBE > 插入
Module
> 粘贴下面的代码 - 更改代码行 3 中的工作表名称以匹配您的工作表名称(
Sheet1
在当前代码中) - 运行代码(下面的示例表设置/输入/输出)
Option Explicit
Sub CSV()
Dim ws As Worksheet: Set ws = ThisWorkbook.Sheets("Sheet1")
Dim Contact As Range, Contacts As Range, ContactString, i
Set Contacts = ws.Range("A2:A" & ws.Range("A" & ws.Rows.Count).End(xlUp).Row)
For Each Contact In Contacts
ContactString = Split(Contact, ", ", , vbTextCompare)
For i = LBound(ContactString) To UBound(ContactString)
Contact.Offset(, i + 1) = ContactString(i)
Next i
ContactString = ""
Next Contact
End Sub
推荐阅读
- css - 它不会从左到右显示图像。它仅垂直显示
- python - 在 Sublime Text 3 中安装 Anaconda 后没有 Scikit-learn
- javascript - Angular - 多个模块
- scala - 替换列表元素中的字符串
- json - Swift - 在 HTTP POST 中未正确发送编码密钥
- r - TropFishR plot.lfq 函数限制,如何在 ggplot2 中生成类似的图形
- linq - LINQ 恢复顺序后并行处理
- javascript - Python Selenium:单击单选按钮
- php - 难以在 Facebook-PHP-SDK 中授权应用程序
- json - 在序列化/反序列化 Avro Record 后,在 Scala 中将 java.util.HashMap 转换为 JSON