Как заменить ячейки в столбце китайскими иероглифами на основе списка переводов? - PullRequest
0 голосов
/ 15 октября 2019

Я новичок в VBA. В идеале я хотел бы собрать макрос, который будет сканировать определенный столбец для определенных китайских фраз и переводить их в соответствии со списком переводов.

Я начал с некоторого примитивного поиска и замены через цикл Activecell.value по совету моего друга, но он не будет работать, потому что VBA не допускает китайские иероглифы.

sub Translate()

ActiveCell.Select ("A2")

Dim r As Integer      ' Number of rows

'   ****************************** Input ******************************

'  Count rows "r" & Indent

'   Use Loop

Do

    r = r + 1
    If ActiveCell.Value = "??" Then
    ActiveCell.Value = "Apple"
    Else
        If ActiveCell.Value = "??" Then
           ActiveCell.Value = "Banana"
    End If

'   Move Cursor
    ActiveCell.Offset(0, 1).Select
'   End Loop
Loop Until ActiveCell.Value = ""

End Sub

Вот логика, которой я бы хотел следовать за макросом:

  1. выбрать определенный столбец в качестве диапазона
  2. проверить значение ячейки
  3. если значение ячейки= конкретная китайская фраза (вероятно, из другого листа или индекса)
  4. заменить значение указанной фразой перевода
  5. продолжить вниз по столбцу, пока не будет достигнута пустая ячейка, затем завершить макрос

Например,

   A
1 **Fruit**
2 赛伍
3 香蕉

проверяется по справочному листу или индексу:

   A    B
1 赛伍 apple
2 香蕉 banana

, так что конечный результат:

    A
1 **Fruit**
2 apple
3 banana

Любая помощь ваммогли бы предоставить, будет принята с благодарностью. Спасибо!

Редактировать: я не думаю, что мой вопрос является дубликатом к "объявлению строки Unicode в VBA в Excel", потому что в идеале макрос будет функционировать на основе чтения значений ячеек за пределами кода

пример:

' if Sheet0!A2 matches Sheet1!A2, replace Sheet0!A2 with Sheet1!B2

1 Ответ

1 голос
/ 15 октября 2019

Давайте предположим, что два листа Sheet1 и Sheet2. Вы можете использовать цикл for для итерации ячеек первого столбца на Sheet1, а затем использовать метод Range.Find для поиска совпадения в Sheet2.

Попробуйте что-то вроде этого:

Option Explicit

Sub Test()
    Dim lastRow As Long, i As Long
    lastRow = Sheet1.Range("A" & Sheet1.Rows.Count).End(xlUp).Row
    For i = 2 To lastRow
        Dim currentCell As Range, foundChineseCell As Range, foundEnglishCell As Range
        Set currentCell = Sheet1.Range("A" & i)
        Set foundChineseCell = Sheet2.Range("A:A").Find(currentCell.Value)
        If Not foundChineseCell Is Nothing Then
            Set foundEnglishCell = foundChineseCell.Offset(0, 1)
            currentCell.Value = foundEnglishCell.Value
        End If
    Next
End Sub

Результат:

Demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...