example of function using ExcelVBA_InStr

エクセルを使って翻訳チェック?

表計算ソフトのエクセルでできる文字列操作

この例では、[Sheet1] がチェック対象です。
[Sheet1] も、複数あるシート [REF1][REF2][REF3] … もフォーマットは同じ。

[B列] に日本語、[C列] に英語という組み合わせが行ごとにリスト化されたものです。

[Sheet1] の[B列] + [C列] の組み合わせが、複数シート [REF1][REF2][REF3] … のどこかに存在するかしないかを確認したい
それが目的です。

MEMO:
この確認は、翻訳業界で言う、既存翻訳との統一性の確認です。
[Sheet1] がチェック対象となる新規の翻訳。複数あるシート [REF1][REF2][REF3] … が既存翻訳という関係です。
普通ならば翻訳メモリーツールを使いたいことですが、それが使えないとしたら…

マクロによる自動検索とその結果を同じシート上に出力してやろうと言うわけです。

  1. [Sheet1] の [B列] を順番に読み取り、
  2. 複数シート [REF1][REF2][REF3] …の [B列] にある日本語と比較
  3. 同じものがあれば見つかった [REF1][REF2][REF3] …のシート名と対訳 [C列] の内容を[Sheet1] の[D列] + [E列] へ出力
  4. さらに [C列] と [D列] の内容を比較して同じならOKの青、違っていたらNGの赤 に文字色を変更します

[Sheet1] の [B1]のテキストの検索・確認を [REF1][REF2][REF3] …の全シートに対して行い、
その検索工程を[B2], [B3], [B4], [B5]… と連続して行います。

 

Excel VBAのヒント

シートの行数を取得するには

シートの全行を上から下へ連続して読み取る - そのためには

Worksheets(“Sheet1”).Range(“A1”).Currentregion.Rows.Count

が定型文。

この関数がシートの値が入っている行の数を返してくれますから、その数値を受けるための変数を用意しておきます。

Dim cnt as Long

cnt という変数をLong型で用意しておいて、行数を

cnt = Worksheets(“Sheet1”).Range(“A1”).Currentregion.Rows.Count

[Sheet1] の [B列] の全行を上から下へ連続して読み取るには、行を1行ずつたどっていく行のカウンターになる変数をもう1つ用意します。

Dim cnt as Long
Dim i as Long ‘行をたどるカウンター

With Worksheets(“Sheet1”) ‘With で挟まれた内容はすべてワークシートに関するもの

cnt = .Range(“A1”).Currentregion.Rows.Count ‘行数を確認して

for i = 1 to cnt ‘1行目から最終行まで

If .Range(“A” & i).Text …… then ‘所定の処理を行います
ここに必要な処理内容をコーディングします
end If

next i ‘for … next

スポンサードリンク

end With

チェック対象の [Sheet1] も、検索対象の複数シート [REF1][REF2][REF3] … も、どちらもこの行数確認が今回の作業のはじまりで必要です。

そして、エクセルで翻訳(+翻訳チェック)の超基本のはじまりです。