▽1
●
a-kuma3 ●250ポイント ベストアンサー |
マクロだったら、あまり難しく考えなくても大丈夫です。
Sub replace_direction() n = Sheets("sheet1").Cells(Rows.Count, 1).End(xlUp).Row For i = 2 To n v = Sheets("sheet1").Cells(i, 1).Value ' 力技 If v = "北東" Then r = "南東" ElseIf v = "北西" Then r = "南西" ElseIf v = "南東" Then r = "北東" ElseIf v = "南西" Then r = "北西" ElseIf v = "南" Then r = "北" ElseIf v = "北" Then r = "南" ElseIf v = "東" Then r = "西" ElseIf v = "西" Then r = "東" Else r = v ' 念のため End If Sheets("sheet1").Cells(i, 1).Value = r Next End Sub
関数ならVLOOKUP関数ですね。
サンプルファイルを元に説明します。
E2:F9に下記のリストを入力します。
E2: 北東 F2: 南東
E3: 北西 F3: 南西
E4: 南東 F4: 北東
E5: 南西 F5: 北西
E6: 南 F6: 北
E7: 北 F7: 南
E8: 東 F8: 西
E9: 西 F9: 東
B2に下記の数式を入力します。
=IF(A2="","",VLOOKUP(A2,$E$2:$F$9,2,0))
B2の数式をコピーし、B3:B1056に貼り付けます。
B2:B1056を選択、コピーし、A2を選択し、
貼り付けボタンの中から[値]をクリックし値貼り付けします。
高度な文字列書き換えを行いたい場合には、sedをマスターするといいかもしれません。何回も行うとか、一回だけとか、何回目の適合のみ行うとかいろいろ指定できます。
http://www.iplab.cs.tsukuba.ac.jp/script/www.netlab.is.tsukuba.ac.jp/ohori/sed.html