在一个单元格中查找,在不同单元格中替换 - 仅适用于一个阶段

时间:2017-03-31 12:26:10

标签: excel vba excel-vba

我正在创建一个有助于翻译用户界面的工具。

我在Sheet“Translate”Col A中有一个英语短语列表,我希望与Col A中的“2052简体中文”表上的翻译库中的英语短语进行比较。当找到匹配时,我想要共同发布图书馆工作表B的中文短语将被复制到“翻译”表格的Col B.

在不同的论坛中搜索类似的问题,我发现了以下我根据自己的需求调整的内容:

Sub Replace_From_List()

Dim cell As Range, rngFind As Range, counter As Long
Dim RefSheet As String
Dim ReplaceSheet As String

RefSheet = "2052 Simplified Chinese"
ReplaceSheet = "Translate"

'List of items to search for from Translated phases sheet column A
With Sheets(RefSheet)
    Set rngFind = .Range("A1", .Range("A" & Rows.Count).End(xlUp))
End With

For Each cell In rngFind
    'Search in Sheet containing phases to translate Column A
    Set Found = Sheets(ReplaceSheet).Range("A:A").Find(What:=cell.Value, _
                                                   LookIn:=xlValues, _
                                                   LookAt:=xlWhole, _
                                                   SearchOrder:=xlByRows, _
                                                   MatchCase:=False)

    If Not Found Is Nothing Then
        'When a match is found, replace Sheet "Translate" column B with Sheet "2052 Simplified Chinese" Column B
        'Overwrites formulas
        Found.Offset(, 1).Value = cell.Offset(, 1).Value
        counter = counter + 1
    End If
Next cell

MsgBox "Replacements made: " & counter, , "Replacements Complete"

End Sub

但是,这似乎只会替换每个匹配的短语一次,然后转到下一个短语。我需要它继续搜索整个工作表并替换它找到的每个匹配项,然后再转到下一个短语。

你可以在下面的图片中看到B3中的值也应该在B4中,与B18相同:B21

Results from Replace_From_List() Sub

我认为我需要添加另一个循环或更改我的循环参数来执行此操作,但我不完全确定发生了什么。

我熟悉C编程,但我对VBA很新手。

1 个答案:

答案 0 :(得分:1)

您可以使用FindNext方法搜索值,直到它返回到原始找到的项目(虽然我必须说我不明白为什么你不能使用VLOOKUP)。

   <application
    android:name="AppController"
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">