1377137035 質問です

エクセルで文中にある
[全]ローマ字[小]のf を
[半]ローマ字[小]のf に変換する関数かマクロをお願いします
列(AV)指定できることでも構いません
できればどこにあったかセルに色が付く方法があれば助かります
対象はローマ字とハイフンのみです

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/08/22 13:46:26
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198

ポイント50pt
Sub 文字変換()
    Dim l As Long= "A"

    For l = 1 To Cells(Rows.Count,).End(xlUp).Row
        a = Cells(l,)
        Cells(l,) = StrConv(Cells(l,), vbNarrow)
        If a <> Cells(l,) Then
            Cells(l,).Interior.Color = 65535
        End If
    Next l
End Sub

変換したところは 黄色にしました。
列に 変換したい列をセットしてください。

半角全部変換しています。

Sub 大文字変換()
    Dim l As Long= "A"

    For l = 1 To Cells(Rows.Count,).End(xlUp).Row
        a = Cells(l,)
        Cells(l,) = henkan(Cells(l,))
        If a <> Cells(l,) Then
            Cells(l,).Interior.Color = 65535
        End If
    Next l
End Sub

Function henkan(aa As String) As String
    d = ""
    For b = 1 To Len(aa)
        c = Mid(aa, b, 1)
        If c >= "A" And c <= "Z" Then
            c = StrConv(c, vbNarrow)
        End If
        
        If c >= "a" And c <= "z" Then
            c = StrConv(c, vbNarrow)
        End If
        
        If c = "-" Then
            c = StrConv(c, vbNarrow)
        End If
        d = d & c
    Next b
    henkan = d
End Function


ローマ字とハイフンのみです。

他6件のコメントを見る
id:taknt
Sub 大文字変換()
    Dim l As Long= "AV"

    For l = 28 To 49
        a = Cells(l,)
        Cells(l,) = henkan(Cells(l,))
        If a <> Cells(l,) Then
            Cells(l,).Interior.Color = 65535
        End If
    Next l
End Sub

Function henkan(aa As String) As String
    d = ""
    For b = 1 To Len(aa)
        c = Mid(aa, b, 1)
        If c >= "A" And c <= "Z" Then
            c = StrConv(c, vbNarrow)
        End If
        
        If c >= "a" And c <= "z" Then
            c = StrConv(c, vbNarrow)
        End If
        
        If c = "-" Then
            c = StrConv(c, vbNarrow)
        End If
        d = d & c
    Next b
    henkan = d
End Function


よくみたら同じ列内でしたので 上記でOKかと思われます。


列 = "AV"
For l = 28 To 49

ここを変更しました。

2013/08/23 12:17:11
id:inosisi4141

ありがとうございました
大変助かりました。
上手くいきました。

2013/08/23 15:07:27

その他の回答1件)

id:taknt No.1

回答回数13539ベストアンサー獲得回数1198ここでベストアンサー

ポイント50pt
Sub 文字変換()
    Dim l As Long= "A"

    For l = 1 To Cells(Rows.Count,).End(xlUp).Row
        a = Cells(l,)
        Cells(l,) = StrConv(Cells(l,), vbNarrow)
        If a <> Cells(l,) Then
            Cells(l,).Interior.Color = 65535
        End If
    Next l
End Sub

変換したところは 黄色にしました。
列に 変換したい列をセットしてください。

半角全部変換しています。

Sub 大文字変換()
    Dim l As Long= "A"

    For l = 1 To Cells(Rows.Count,).End(xlUp).Row
        a = Cells(l,)
        Cells(l,) = henkan(Cells(l,))
        If a <> Cells(l,) Then
            Cells(l,).Interior.Color = 65535
        End If
    Next l
End Sub

Function henkan(aa As String) As String
    d = ""
    For b = 1 To Len(aa)
        c = Mid(aa, b, 1)
        If c >= "A" And c <= "Z" Then
            c = StrConv(c, vbNarrow)
        End If
        
        If c >= "a" And c <= "z" Then
            c = StrConv(c, vbNarrow)
        End If
        
        If c = "-" Then
            c = StrConv(c, vbNarrow)
        End If
        d = d & c
    Next b
    henkan = d
End Function


ローマ字とハイフンのみです。

他6件のコメントを見る
id:taknt
Sub 大文字変換()
    Dim l As Long= "AV"

    For l = 28 To 49
        a = Cells(l,)
        Cells(l,) = henkan(Cells(l,))
        If a <> Cells(l,) Then
            Cells(l,).Interior.Color = 65535
        End If
    Next l
End Sub

Function henkan(aa As String) As String
    d = ""
    For b = 1 To Len(aa)
        c = Mid(aa, b, 1)
        If c >= "A" And c <= "Z" Then
            c = StrConv(c, vbNarrow)
        End If
        
        If c >= "a" And c <= "z" Then
            c = StrConv(c, vbNarrow)
        End If
        
        If c = "-" Then
            c = StrConv(c, vbNarrow)
        End If
        d = d & c
    Next b
    henkan = d
End Function


よくみたら同じ列内でしたので 上記でOKかと思われます。


列 = "AV"
For l = 28 To 49

ここを変更しました。

2013/08/23 12:17:11
id:inosisi4141

ありがとうございました
大変助かりました。
上手くいきました。

2013/08/23 15:07:27
id:dawakaki No.2

回答回数797ベストアンサー獲得回数122

ポイント50pt

http://q.hatena.ne.jp/1377137035
関数ASCを使ってできます。

=ASC(文字列) ■全角文字を半角にする
http://kokodane.com/kan35.htm

fと-だけ置換したいなら、SUBSTITUTE関数を入れ子にして使います。
=SUBSTITUTE(SUBSTITUTE(セル名,"f","f"),"-", "-")

id:inosisi4141

ありがとうございました上手く変換しました
でも状況がマッチングソフトでは合致してくれないので
困りました原因を調査中です

2013/08/22 13:46:10
id:inosisi4141

別ファイルでやりましたら上手くいきました

2013/08/22 14:17:09

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません