- ベストアンサー
Excel2007のマクロでデータを置き換える方法
- Excel2007のマクロを使用して、セルに入っているデータを特定の記号に変換する方法を教えてください。
- セルM29からS29までに3つずつデータが入っており、それぞれのデータに応じて異なる記号に変換したいです。
- 具体的な変換内容は、M29アイウをM30にA、N29アウイをN30にB、O29イウアをO30にC、P29アイウをP30にA、Q29イアウをQ30にD、R29ウアイをR30にE、S29ウイアをS30にFとしたいです。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
マクロは、既に上がっているので必要ないと思いました。 同じやり方を載せてもも仕方が無いので、違うやり方を載せます。 但し、watabe007 さんのやり方の方が優れてます。 ' Option Explicit ' Sub Macro1() ' Dim Col As Integer Dim Cell As Variant ' For Col = 13 To [M29].End(xlToRight).Column Cell = "," & Cells(29, Col) & "," Cell = InStr(" ,アイウ,アウイ,イウア,イアウ,ウアイ,ウイア,", Cell) \ 4 Cells(30, Col) = Mid(" ABCDEF", Cell + 1, 1) Next Col End Sub 私ならこの程度にマクロは使いません。 関数だとあまりに複雑になるため、関数でできてもマクロを使った方が良いという事もあります。 マクロの学習のためにあえてマクロを使うのもいいですが、関数でも可能ということは頭に入れておいた方が良いです。
その他の回答 (4)
- SI299792
- ベストアンサー率47% (780/1631)
=IF(M29="","",MID("ABCDEF",FIND(","&M29&",",",アイウ,アウイ,イウア,イアウ,ウアイ,ウイア,")/4+0.75,1)) という関数でもできます。
お礼
待ってました!ありがとうございます。マクロの場合はどうなりますか?
- watabe007
- ベストアンサー率62% (476/760)
マクロで行うのなら Sub Test() Dim c As Range, myArr1 As Variant, myArr2 As Variant, n As Variant myArr1 = Array("アイウ", "アウイ", "イウア", "イアウ", "ウアイ", "ウイア") myArr2 = Array("A", "B", "C", "D", "E", "F") For Each c In Range("M29:S29") n = Application.Match(c.Value, myArr1, 0) If Not IsError(n) Then c.Offset(1).Value = myArr2(n - 1) Next End Sub
お礼
ありがとうございました。ちょっと勉強しながら試してみます。
- mt2015
- ベストアンサー率49% (258/524)
- kanti42
- ベストアンサー率26% (8/30)
お礼
できました。ありがとうございました。