我开始使用VBA并且正在努力处理需要清理的工作表。 我有一个字符串列,混合了zipcodes和城市名称。我想从列A中提取邮政编码并放在B列中,并在城市名中用下划线从C列中提取。
我的(示例)输入:
A
55442
11211
1
12
11211_brooklyn
1002_new_york
new_york
brooklyn
我想要什么
A
55442
11211
1
12
11211_brooklyn
1002_new_york
new_york
brooklyn
B
55442
11211
1
12
11211
1002
C
brooklyn
new_york
new_york
brooklyn
我理解如何使用Left公式提取字符,但这还不够。
有什么想法吗? 谢谢。
答案 0 :(得分:2)
B2:
=IF(ISNUMBER(A2),A2,IFERROR(1*LEFT(A2,FIND("_",A2)-1),""))
C2:
=MID(A2, 1+LEN(B2)+ISNUMBER(B2),99)
编辑 - 因为看起来像00010_alaska
这样的情况;包含前导零的邮政编码,应该用于列C
:
C2:
=IF(B2="",A2, IFERROR(MID(A2,1+FIND("_",A2),99),""))
答案 1 :(得分:1)
在A列中放置您的源列表 在B栏(邮政编码)中放入公式:
clCreateCommandQueue()
在C列(城市)中放置公式
clSetCommandQueueProperty()
答案 2 :(得分:0)
我经历过并使用帮助列来确定数据是否以数字开头。如果是的话,我想出它是否也有一个名字。然后我返回完整的数据集或截断的数据集,直到城市名称。 B栏:
=IF(ISNUMBER(INT(MID(A1,1,1))),MID(A1,1,IF(ISERROR(SEARCH("_",A1)),LEN(A1),SEARCH("_",A1)-1)),"")
然后我通过并确定数据是否以数字以外的其他内容开头。如果是的话,它就是一个城市,我使用整个数据集来记录该记录。如果没有,我测试看它是否有下划线。如果确实如此,那就有一座城市在场。然后我使用帮助列来确定下划线开始的位置并返回城市名称。我在帮助列中留下了空白,只得到一个名字。然后,我将它连接起来以得到我的最终答案。由此产生的超级公式为:
=CONCATENATE(IF(NOT(ISNUMBER(INT(MID(A1,1,1)))),A1,""),IF(IF(IF(NOT(ISNUMBER(INT(MID(A1,1,1)))),A1,"")="",IFERROR(SEARCH("_",A1),""),"")="","",MID(A1,IF(IF(NOT(ISNUMBER(INT(MID(A1,1,1)))),A1,"")="",IFERROR(SEARCH("_",A1),""),"")+1,LEN(A1))))
这很难看,但它会完成工作。我建议直接复制并粘贴到工作表中而不是使用VBA。但是,如果必须使用VBA,请遍历B列和C列,并将提供的公式应用到单元格公式属性中。我希望有所帮助。