用其他人替换特定条款

时间:2014-02-02 13:42:25

标签: string excel replace

我有几百个包含3列的excel文件:名称,状态,电话号码以及每个文件中有数千行数据。 State列中的数据是缩写的(AL表示阿拉巴马州,FL表示佛罗里达州等)。 有没有办法在一次移动中使用全名更改所有缩写?我知道我可以手动或使用搜索功能搜索和替换它们,但可以通过宏来完成吗?

1 个答案:

答案 0 :(得分:1)

对于文件中的每个文件和每个工作表,选择要翻译的单元格并运行此宏:

Sub stitutions()
    Dim r As Range
    Dim fnd As String, rep As String
    abr = "AL,AK,AS,AZ,AR,CA,CO,CT,DE,DC,FM,FL,GA,GU,HI,ID,IL,IN,IA,KS,KY,LA,ME,MH,MD,MA,MI,MN,MS,MO,MT,NE,NV,NH,NJ,NM,NY,NC,ND,MP,OH,OK,OR,PW,PA,PR,RI,SC,SD,TN,TX,UT,VT,VI,VA,WA,WV,WI,WY"
    states = "Alabama,Alaska,American Samoa,Arizona,Arkansas,California,Colorado,Connecticut,Delaware,District Of Columbia,Federated States Of Micronesia,Florida,Georgia,Guam Gu,Hawaii,Idaho,Illinois,Indiana,Iowa,Kansas,Kentucky,Louisiana,Maine,Marshall Islands,Maryland,Massachusetts,Michigan,Minnesota,Mississippi,Missouri,Montana,Nebraska,Nevada,New Hampshire,New Jersey,New Mexico,New York,North Carolina,North Dakota,Northern Mariana Islands,Ohio,Oklahoma,Oregon,Palau,Pennsylvania,Puerto Rico,Rhode Island,South Carolina,South Dakota,Tennessee,Texas,Utah,Vermont,Virgin Islands,Virginia,Washington,West Virginia,Wisconsin,Wyoming"
    aryabr = Split(abr, ",")
    arystates = Split(states, ",")
    Set r = Intersect(ActiveSheet.UsedRange, Selection)
    For i = LBound(aryabr) To UBound(aryabr)
        fnd = aryabr(i)
        rep = arystates(i)
        r.Replace What:=fnd, Replacement:=rep, SearchOrder:=xlByColumns, MatchCase:=True
    Next i
End Sub