如何使用VBA替换ID的字符串?

时间:2012-05-31 20:08:53

标签: excel-vba text-files vba excel

我搜索了这个问题的答案,但似乎人们回答它的唯一方法是使用Excel函数。我在Excel中有一个文件加载到文本文件中,但每周都会出现新数据。我需要将this第一列中的市场名称替换为各自的代码,这些代码位于this单独的工作表中,但位于同一个Excel文件中。

例如,我希望所有'CANADIAN DOLLAR - CHICAGO MERCANTILE EXCHANGE'单元格被'CAD'替换,所有'SWISS FRANC - CHICAGO MERCANTILE EXCHANGE'单元格将被'SWF'等替换。

我更喜欢Excel文件中的名称保持不变,只有在我将它们传输到文本文件时才会更改。但是,如果做得更难,那就不重要了。

供参考,这是我用来写入文本文件的代码:

Sub getData1()
On Error GoTo ErrHandler:
''Finding Row Information
Dim Ticker As String
Dim rCount As Integer, i As Integer, j As Integer, rcCount As Integer, rowStr As String
rCount = Application.CountA([RDRows])
rcCount = Application.CountA([RDCols])
Myfile = "H:\wkoorbusch\Desktop\" & "CFTC_Fin_Data.txt"

Dim fnum As Integer
fnum = FreeFile
Open Myfile For Output As fnum
For i = 1 To rCount
    For j = 1 To rcCount
        rowStr = [Start].Offset(i, 0).Value & "," & [Start].Offset(0, j).Value _
        & "," & Format([Start].Offset(i, 2).Value, _
        "mm/dd/yyyy") & "," & [Start].Offset(i, j).Value
        Print #fnum, rowStr
    Next j
Next i
Close fnum
Exit Sub

ErrHandler:
    Close fnum
End Sub

提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:1)

将文本及其替换放在电子表格的2个列中,然后使用

On Error Resume Next
Application.WorksheetFunction.VLookup(MyText,range("Sheet1!A1:B300"),2,False)
If Err.Number=1004 then msgbox "Value " & MyText & " not found"

返回替换文字。 如果找不到查找值,则返回可捕获的错误号码100。

(功能上等同于VLOOKUP作为电子表格公式)