![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
会社の仕事で、部品リストを会社で決められた英訳に従って翻訳しなければならず困っています;
会社で決められた英訳単語数は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を探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・ゆるやかでぃべーと タイムマシンを破壊すべきか。
- ・「I love you」 をかっこよく翻訳してみてください
- ・歩いた自慢大会
- ・許せない心理テスト
- ・字面がカッコいい英単語
- ・昔のあなたへのアドバイス
- ・かっこよく答えてください!!
- ・あなたが好きな本屋さんを教えてください
- ・スタッフと宿泊客が全員斜め上を行くホテルのレビュー
- ・【大喜利】【投稿~8/27】 こんなガソリンスタンド二度と来るか!なぜそう思った?
- ・これ何て呼びますか Part2
- ・人生で一番思い出に残ってる靴
- ・【お題】動物のキャッチフレーズ
- ・【お題】甲子園での思い出の残し方
- ・ゆるやかでぃべーと すべての高校生はアルバイトをするべきだ。
- ・「それ、メッセージ花火でわざわざ伝えること?」
- ・自分用のお土産
- ・人生で一番お金がなかったとき
- ・一番好きなみそ汁の具材は?
- ・泣きながら食べたご飯の思い出
- ・ちょっと先の未来クイズ第1問
- ・ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと
- ・初めて自分の家と他人の家が違う、と意識した時
- ・単二電池
- ・チョコミントアイス
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelの条件付き書式について
-
Excelの警告について
-
GoogleスプレッドシートでA1に...
-
Excelで数値を時間数に変換する...
-
【Excel】版が同じ事を示す番号...
-
エクセルでファイルの最終更新...
-
エクセルまたはGoogleスプレッ...
-
Excelシートに画像を貼る時
-
エクセルの数式バーのフォント...
-
Excelについて
-
【マクロ】functionプロシージ...
-
EXCELの散布図で日付が1900年に...
-
【マクロ】for nest について ...
-
お世話になります。 Excelを使...
-
googleのスプレッドシート
-
セルの数を求めたい
-
Excel関数-文字列で自動作成さ...
-
EXCELで数値が異なった数字を足...
-
EXCELのような表を使っています...
-
エクセルで「ページレイアウト...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルの数式バーのフォント...
-
エクセルでファイルの最終更新...
-
2列に入っているデータを1列...
-
データチェックを行うエクセル...
-
再質問です。マクロの修正箇所...
-
エクセルで 自動的に◯や数字を...
-
数字入力後他の文字等が表示さ...
-
Excel 小さくなったスクロール...
-
F9キーについて。
-
【ExcelVBA】ダブルクォーテー...
-
Excelに詳しい方! B列が「日...
-
セルの数を求めたい
-
Excelを無料で使うには? パソ...
-
IFとIFS関数
-
【Excel】別シートから条件に合...
-
EXCELの散布図で日付が1900年に...
-
ある表にフィルターをかけて出...
-
【ExcelVBA】名前を付けて保存→...
-
Excelセルを跨いで合計を出す方法
-
エクセルのツールバーから数値...
おすすめ情報