Excel (VBA)

Excel VBAに関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10 Home : Excel 2016)
表を用い他文字列の一括変換(文字列完全一致、大文字区別)
投稿日時: 18/09/30 11:27:06
投稿者: じーえ

初心者です。よろしくお願いいたします。
 
文字列を数字に変換(文字列完全一致、大文字小文字区別)をしようとしています。エクセルの置換を使用した方法では、置換する種類がおおく手間がかかるため、変換表を作成してできないものかといろいろと検索しておりました。
 
http://oboegakiblog.seesaa.net/article/436668441.htmlのベージよりsheet2に変換表を作成して、sheet1の文字列を変換するコードが公開されておりましたので 流用して 下記のようなコードで実行しましたが 大文字文字の区別ができません。vbBinaryCompareをするのかなぐらいしかわからず よろしければ 大文字小文字を区別して置換する方法を教えていただけないでしょうか?
 
(使用したコード)
 
Sub 置換()
Dim i As Long, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
For i = 2 To wS2.Cells(Rows.Count, "A").End(xlUp).Row
wS1.Cells.Replace what:=wS2.Cells(i, "A"), replacement:=wS2.Cells(i, "B"), lookat:=xlWhole
Next i
End Sub

回答
投稿日時: 18/09/30 13:18:17
投稿者: もこな2

やりたいことがピンときてないので外してるかもですけど、提示のコードを整理しつつ直すと
 
Sub 置換改()
    Dim i As Long
 
    With Worksheets("Sheet2")
        For i = 2 To .Cells(.Rows.Count, "A").End(xlUp).Row
            Worksheets("Sheet1").Cells.Replace _
                what:=.Cells(i, "A"), replacement:=.Cells(i, "B"), _
                lookat:=xlPart, MatchCase:=True
        Next i
    End With
End Sub
 
こんな感じでしょうか・・
 
リンク先を見ていないのでわかりませんが、Replaceメソッドの場合、引数省略すると)MatchCase:=False になって”大文字小文字を区別しない”になるので、省略せずちゃんと書けば”大文字と小文字を区別”するようになると思います。
 
また、直してしまいましたがlookatはxlWhole(完全一致)で良かったんでしょうか?
完全一致でよくて、置換される対象が1行や1列に並んでる場合、関数で簡単に処理できそうな気がします。
 
参考にしたサイト
https://www.sejuku.net/blog/31570
(Replaceメソッドのほうです。)

投稿日時: 18/09/30 13:33:27
投稿者: じーえ

もなこ2さんありがとうございました。
大文字 小文字を含めて 変換できました。
 
VBAは 基礎も理解していないため 勉強していきます。