
会社の仕事で、部品リストを会社で決められた英訳に従って翻訳しなければならず困っています;
会社で決められた英訳単語数は350単語あり、EXCELで一覧として与えられました。
そこで、EXCELで自動翻訳させるマクロを教えてくださいm(_ _)m
予め「シート1」のA列に(部品名)、B列に(決められた英訳)を入力しておき。
「シート2」のA列またはC列に部品名が入力されると、それぞれB列・D列に自動で自分の決めた訳に置換させる方法を教えてほしいです。
(例)
「シート1」 「シート2」
| A | B | | A | B | C | D |
1 釦 SWITCH 1 ヒューズ FUSE ランプ LAMP
2 ランプ LAMP 2 ランプ LAMP ヒューズ FUSE
3 ヒューズ FUSE 3 釦 SWITCH ヒューズ FUSE
宜しくお願いします。
No.3ベストアンサー
- 回答日時:
あらかじめ対照表を用意してあるのがSheet1(もしちがっていらた下記のコードの"Sheet1"を修正してください。
)A列またはC列に部品名を入力するのがSheet2だとします。
1. シート(Sheet2)のタブを右クリックして、[コードの表示]。
2. 出てきた白い所に、以下のコードを貼付けます。
'********これより下**********
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column <> 1 And Target.Column <> 3 Then Exit Sub
Dim myDic As Object
Dim myW
Dim i As Long, c As Range
Set myDic = CreateObject("Scripting.Dictionary")
With Sheets("Sheet1")
myW = .Range("A1", .Cells(Rows.Count, "B").End(xlUp)).Value
End With
For i = 1 To UBound(myW)
myDic(myW(i, 1)) = myW(i, 2)
Next i
For Each c In Target
If myDic.Exists(c.Value) Then
c.Offset(, 1).Value = myDic(c.Value)
End If
Next c
End Sub
'********これより上**********
3.Alt+F11キーでワークシートへもどります。
これでOK
A、C列以外への入力には反応しません。
Sheet1の対照表は何百行あってもOKです。
インターネットの調子が悪く、回答が遅れてすみません><
初日は私の知識不足で理解するまでに時間がかかってしまったのも事実なので
本当に申し訳ないです。
こちらのマクロは私の要望を全てかなえてくれました。
しかも、こちらは貼り付けるだけでそのまま使えました。
EXCELテクニック集という感じで、こういう使い方ができるんだと感動しました。
本当にありがとうございました。迷うことなくベストアンサーです。
No.5
- 回答日時:
ANo3, merlionXXです。
No2のお礼に
「このシートに作る方法だとコピー&ペーストで変換されないようなので、時間があったらボタンを作って実行型のマクロを作ってみようかと思います。」
とお書きですが、わたしのコード(ANo3)ではA列とC列は、複数セルへのコピー&ペーストでも大丈夫なように書いてありなす。
まだおためしにはなってないのでしょうか?
回答が遅くなってしまい申し訳ありませんでした。
会社のインターネット環境が悪く、ベストアンサーの画面に到達できず。
「参考になった」のボタンがやっとでした(汗
今回を機に自宅にもインターネットを引くことにしました。
早期回答に対し、お礼も遅く、回答していただいた皆様にはご迷惑をお掛けしましたm(_ _)m
本当にありがとうございました。
No.4
- 回答日時:
一例です。
シート1をSheet1、シート2をSheet2としています。
(1)Sheet2のシートタブ上で右クリック→コードの表示→以下のコードを貼り付けてシート2のA,C列に入力してみて下さい。
必要ないと思いますが複数セルへの入力も可能としています。
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("A:A")) Is Nothing _
And Intersect(Target, Range("C:C")) Is Nothing Then Exit Sub
For Each c In Sheets("Sheet1").Range("A:A")
If c.Value = "" Then Exit Sub
For Each d In Range(Target.Address)
If c.Value = d.Value Then
d.Offset(0, 1).Value = c.Offset(0, 1).Value
End If
Next
Next
End Sub
回答ありがとうございます。
こちらの方法でも問題なく変換されました。
ベストアンサーが複数選べたらこちらにも付けたかったです。
貴重な回答ありがとうございました。
No.2
- 回答日時:
シート「シート2」のシート名タグを右クリック→コードの表示(V)で表示されるコードエリアに以下のコード貼り付けたらで自動的にできます。
下記コード中、「"シート1"」は予め英訳を載せてあるシートのシート名です。シート名が合致していないと「シート2」へのインプット中にエラーが起きます。その場合は、シート名がコードに一致するよう訂正して下さい。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim r As Double
If Target.Count = 1 And Target.Column = 1 Then
If Target.Value <> "" Then
For r = 1 To Sheets("シート1").Range("A65536").End(xlUp).Row
If Sheets("シート1").Cells(r, 1) = Target.Value Then
ActiveCell.Offset(-1, 1).Value = Sheets("シート1").Cells(r, 2) '英訳品名自動記入
Exit Sub
End If
Next r
Else
ActiveCell.Offset(0, 1).ClearContents 'A列データ消去の時B列データも消去
Exit Sub
End If
End If
End Sub
要望通りマクロでの回答ありがとうございます。
会社のエクセルでセルに数式を入れていると、使用者に操作されたときに消されてしまうので
こちらの方法に変更させていただきました。
会社で使っているEXCELは2007なのですが、5行目の
For r = 1 To Sheets("シート1").Range("A65536").End(xlUp).Row
が「複雑すぎて実行できません」とエラーが出てしまったので、とりあえず
For r = 1 To 1000
として使用させて頂いています。
本当は上記の方法の方が下方検索として使い勝手は良かったので残念です。
それと、このシートに作る方法だとコピー&ペーストで変換されないようなので、
時間があったらボタンを作って実行型のマクロを作ってみようかと思います。
この度はありがとうございました。
No.1
- 回答日時:
シート1のA1:B1から、部品名、英訳の一覧があるとする。
シート2のB1、D1に下記の式を入れて下にフィルする。
B1
=IF(A1="","",VLOOKUP(A1,Sheet1!$A$1:$B$3,2,FALSE))
D1
=IF(A1="","",VLOOKUP(C1,Sheet1!$A$1:$B$3,2,FALSE))
回答ありがとうございます。
インターネットの調子が悪くて返信が遅くなり申し訳ありません。
マクロを使わなくてもこの方法で英訳を行うことができました。
会社の作業員によって半角/全角がマチマチで全角に統一させてから行うことで
問題なく行うことが出来ました。
他に使っているデータにも流用できそうなので、使わせていただきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【画像あり】オートフィルター...
-
他のシートの検索
-
Office2021のエクセルで米国株...
-
vba テキストボックスとリフト...
-
【マクロ】元データと同じお客...
-
【マクロ】【相談】Excelブック...
-
【マクロ】実行時エラー '424':...
-
エクセルのVBAで集計をしたい
-
【マクロ】【配列】3つのシー...
-
エクセルシートの見出しの文字...
-
【関数】3つのセルの中で最新...
-
LibreOffice Clalc(またはエク...
-
【マクロ】excelファイルを開く...
-
【マクロ】【画像あり】❶ブック...
-
【マクロ】【画像あり】4つの...
-
Excelで4択問題を作成したい
-
【関数】=EXACT(a1,b1) a1とb1...
-
エクセルの複雑なシフト表から...
-
UNIQUE関数の代用
-
【関数】同じ関数なのに、エラ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【マクロ】元データと同じお客...
-
エクセルの関数について
-
【画像あり】オートフィルター...
-
エクセルのVBAで集計をしたい
-
エクセルのリストについて
-
【マクロ】数式を入力したい。...
-
【マクロ】【相談】Excelブック...
-
Office2021のエクセルで米国株...
-
【マクロ】実行時エラー '424':...
-
他のシートの検索
-
エクセルの複雑なシフト表から...
-
【マクロ】【配列】3つのシー...
-
vba テキストボックスとリフト...
-
【マクロ】左のブックと右のブ...
-
【マクロ】変数に入れるコード...
-
エクセルシートの見出しの文字...
-
【マクロ】別ファイルへマクロ...
-
【関数】同じ関数なのに、エラ...
-
Amazonでマイクロソフトオフィ...
-
ページが変なふうに切れる
おすすめ情報