Excel (VBA) |
|
(Windows 11 Home : Excel 2021)
ひらがなやカタカナは全角のままで英数字のみ半角
投稿日時: 25/11/06 00:40:09
投稿者: バルバロッサ
|
|---|---|
|
お世話になります。
|
|
|
|
投稿日時: 25/11/06 10:25:09
投稿者: Suzu
|
|---|---|
|
「変換」が、関数を使わないで、元データを置換を使って書き換えても良いなら
Public Function convNarrow(c As Variant) As String
Dim chara As String
Dim strRet As String
Dim i As Long
For i = 1 To Len(c)
chara = Mid(c, i, 1)
Select Case AscW(chara)
Case -240 To -231 '0-9 &HFF10 - &HFF19
strRet = strRet & ChrW(AscW(chara) + 288)
Case -223 To -198 'A - Z &HFF21 - &HFF3A
strRet = strRet & ChrW(AscW(chara) + 288)
Case -191 To -166 'a - z &HFF41 - &HFF5A
strRet = strRet & ChrW(AscW(chara) + 288)
Case Else
strRet = strRet & chara
End Select
Next
convNarrow = strRet
End Function
しかしながら、今回の様に「漢字」が含まれていて そこに、高橋 の はしごだか や、吉田 の 下が長いつちよし の様に IME変換時に≪機種依存文字≫ と表示される文字が含まれると 上記では対応できません。 LENや、MID の 文字長さを求め、対象文字を参照する部分で問題が発生します。 サロゲートペアと呼ばれる、文字コード 2文字分 のコードを使い 1文字分を表示させる文字に LEN・MID では対応できず、自作のLENやMID関数を準備する必要があります。 特殊文字が含まれる可能性があるなら、一般機能にて対応した方が無難です。 PHONETIC関数 は フリガナ を表記させる関数。 漢字が含まれているのですから、その漢字 フリガナ に変わってはダメなのでは? そもそも、漢字・ひらがな が含まれるなら、PHONETIC関数 は 不適切でしょう。 |
|
|
|
投稿日時: 25/11/06 15:59:48
投稿者: 紙頼
|
|---|---|
|
A1に文字列がある場合
|
|
|
|
投稿日時: 25/11/06 16:23:09
投稿者: 紙頼
|
|---|---|
|
すみません。
|
|
|
|
投稿日時: 25/11/06 16:32:29
投稿者: 紙頼
|
|---|---|
|
必要な文字数分下のVBAを並べて、
|
|
|
|
投稿日時: 25/11/07 09:53:56
投稿者: 紙頼
|
|---|---|
|
度々すみません。
|
|
|
|
投稿日時: 25/11/07 10:25:52
投稿者: 半平太
|
|---|---|
|
紙頼さん
>投稿日時: 25/11/06 15:59:48 >=CONCAT(・・<9082)*(CODE(MID(A1,SEQUENCE(1,LEN(A1)),1)>9008)),ASC・・ =CONCAT(・・<9082)*(CODE(MID(A1,SEQUENCE(1,LEN(A1)),1))>9008),ASC・・ ↑ ↑じゃないですか? |
|
|
|
投稿日時: 25/11/07 14:42:51
投稿者: 紙頼
|
|---|---|
|
このVBAが簡単で分かりやすく
|
|
|
|
投稿日時: 25/11/07 15:01:46
投稿者: 紙頼
|
|---|---|
|
半平太さん
|
|
|
|
投稿日時: 25/11/07 15:58:10
投稿者: 紙頼
|
|---|---|
|
ほんとうに度々すみません。
|
|
|
|
投稿日時: 25/11/07 16:20:31
投稿者: gombohori
|
|---|---|
|
変換テーブルを用意してもいいかもしれませんね
Function Henkan(str As String) As String
Dim s As String, ret As String
For i = 1 To Len(str)
s = Mid(str, i, 1)
ret = ret & WorksheetFunction.XLookup(s, Range("変換テーブル[Befor]"), Range("変換テーブル[After]"), s, 0)
Next
Henkan = ret
End Function
|
|
|
|
投稿日時: 25/11/07 18:51:05
投稿者: んなっと
|
|---|---|
|
A B
|
|
|
|
投稿日時: 25/11/09 01:28:05
投稿者: バルバロッサ
|
|---|---|
|
たくさんの皆様,本当にありがとうございました。
|
|



