如何替换word lookAt:= xlWhole包括excel宏中的日语逗号

时间:2016-04-07 08:11:07

标签: excel-vba vba excel

必须替换excel单元格中的单词。 使用喜欢

Sub test()
Dim a_row As String
Dim b_row As String
Dim row_counter As Integer
For row_counter = 1 To 600
    a_row = "A" & row_counter
    b_row = "B" & row_counter
    Dim Findtext As String
    Dim Replacetext As String
    Findtext = Sheets("sheet1").Range(a_row).Value
    Replacetext = Sheets("sheet1").Range(b_row).Value
    Dim ws As Worksheet
    For Each ws In ActiveWorkbook.Worksheets
        If ws.Name <> ActiveWorkbook.Worksheets(1).Name Then
            ws.Cells.Replace What:=Findtext, Replacement:=Replacetext, LookAt:= _
            xlWhole, SearchOrder:=xlByRows, MatchCase:=False,    SearchFormat:=False, _
            ReplaceFormat:=False
        End If
    Next ws

Next row_counter
End Sub

sheet1中有两个列。 1st cols显示日语单词。第二列显示英文单词。

公園  park
夏   summer    
緑   Green
青空  blue Sky
男の人 man

在col A中的第二张纸显示

    column A
公園、夏、青空、緑、男の人

上面的代码替换日语单词。

如果LookAt:= _xlPart,替换后显示如下

公园,夏天,青天,绿色,男人の人

如果LookAt:= _xlWhole,它不会替换单词

在第二张纸中显示在单独的列中

 A    B    C     D     E
公園  夏  青空    緑    男の人

如果LookAt:= _xlWhole那么

它完美运作。

我想做

在第二张纸中显示以逗号分隔的单个列A中的值

column A
公園、夏、青空、緑、男の人

需要像输出一样 公园,夏天,蓝天,绿色,男人

请提出一些想法..谢谢

2 个答案:

答案 0 :(得分:2)

如果没有尾随'逗号',可能必须有重复的传球,可能会或可能不会做任何事情;需要涵盖所有可能的组合。

Sub delimitedTranslate()
    Dim w As Long, vWRDs As Variant

    With Worksheets("Sheet1")
        vWRDs = .Range(.Cells(2, "A"), _
                       .Cells(Rows.Count, "A").End(xlUp).Offset(0, 1)) _
                       .Value2
    End With
    With Worksheets("Sheet2")
        With .Columns("A")
            For w = LBound(vWRDs, 1) To UBound(vWRDs, 1)
                .Replace what:=vWRDs(w, 1) & ChrW(12289), _
                         replacement:=vWRDs(w, 2) & Chr(44), _
                         lookat:=xlPart, MatchCase:=False, searchformat:=False
                .Replace what:=ChrW(12289) & vWRDs(w, 1), _
                         replacement:=Chr(44) & vWRDs(w, 2), _
                         lookat:=xlPart, MatchCase:=False, searchformat:=False
                .Replace what:=Chr(44) & vWRDs(w, 1), _
                         replacement:=Chr(44) & vWRDs(w, 2), _
                         lookat:=xlPart, MatchCase:=False, searchformat:=False
            Next w
        End With
    End With
End Sub

translate_Sheet1 translate_Sheet2_before translate_Sheet2_after Sheet1术语 在分隔符翻译之前的Sheet2 在分隔传输之后的Sheet2

答案 1 :(得分:2)

在内存中执行此操作,使用数组更快捷,更轻松。如果我了解您的数据的设置方式 - 以下内容应该适用于您的查找/替换表位于Sheet1的A:B列中,而要替换的值位于sheet2中并且在单元格A1中以逗号分隔:

int float_asm(float x) {
    int result;

    asm ("ucomiss %[zero], %[x]\n\t"
         "movl $2, %[result]\n\t"
         "movl $3, %%esi\n\t"
         "cmovpl %%esi, %[result]"
    : [result] "=r" (result)
    : [zero] "x" (0), [x] "x" (x)
    : "cc", "rsi");
    return result;
}