• 締切済み

エクセルについて

エクセルで半角英数字と半角カナが混在したセルの半角カナのみ全角に変換したいのですが可能でしょうか。英数字は半角を維持したいです。 =JIS()でやるとどうもアルファベットや数字まで全角になってしまうようで…

みんなの回答

回答No.5

こんばんは。 >半角カナのみ全角に変換 #4さんのご指摘の通り、「半角カタカナの濁点や半濁点」は、1文字ですが、全角では、元字を含めて1文字になるので、1文字ずつの変換はできません。 '// Sub Test01() '実行マクロ Dim c As Range For Each c In Range("A1", Cells(Rows.Count, "A").End(xlUp))  If c.Value <> "" Then   c.Value = WordWider(c.Value)  End If Next c End Sub Function WordWider(wd As Variant) '半角カナだけを全角する関数   Dim Matches As Object   Dim Match As Object   Dim buf As String   If Len(wd) > 0 Then    buf = wd   Else    Exit Function   End If   With CreateObject("vbscript.regexp")     .Global = True     .Ignorecase = False     .Pattern = "([\uFF66-\uFF9f]+)" ''半角カナ-正規表現パターン     Set Matches = .Execute(buf)     For Each Match In Matches       buf = Replace(buf, Match, StrConv(Match, vbWide))     Next   End With   WordWider = buf End Function なお、上記の関数だけ取り出して、 =WordWider(A1) とも出来ますが、その都度、計算してしますので、アプリの負荷が大きくなります。関数の場合は、コピーして値貼り付けして、定数文字にしたほうがよいです。

すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.4

回答No.2の代案がありました。 C1の数式を次のように置き換えると良いかも知れません。 =IF(MID($B1,COLUMN()-2,1)<"ア",ASC(MID($B1,COLUMN()-2,1)&D1),MID($B1,COLUMN()-2,1)&D1) C1セルを必要数右へコピーすればC1セルに目的の文字列が現れます。 尚、IF関数の論理式を厳密にするときは次のように論理式を置き換えてください。 MID($B1,COLUMN()-2,1)<"ア"      ↓ CODE(ASC(MID($B1,COLUMN()-2,1)))<128 蛇足ですが、元の文字列を全て全角文字に置き換える理由は半角カタカナの濁点や半濁点の有無で文字位置に誤差が生ずるためです。 A2ギグasゲ98ゴB3 (文字数=16) A2ギグasゲ98ゴB3 (文字数=12)

すると、全ての回答が全文表示されます。
  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.3

>エクセルで半角英数字と半角カナが混在したセルの半角カナのみ全角に変換したいのですが可能でしょうか。 関数では文字列全体を一挙に半角カタカナだけを全角カタカナに変換することは無理のようです。 作業用のテーブルを使って1文字ずつ置き換えることは可能です。 但し、半角英数と半角カタカナが混在している場合は1度全てを全角に変換して英数のみ半角に変換する方法になります。 A1セルに半角英数と半角カタカナが混在した文字列があるとき次の手順で希望通りの処理が出来ました。 1.B1セルに =JIS(A1) として全ての文字列を全角に変換します。 2.C1セルに下記の数式を設定して必要数を右にコピーします。 =IF(LEN(B1)>=COLUMN(A1),IF(MID(B1,COLUMN()-2,1)<"ア",LEFT(B1,COLUMN(A1)-1)&ASC(MID(B1,COLUMN(A1),1))&RIGHT(B1,LEN(B1)-COLUMN(A1)),B1),B1) 貼付画像はExcel 2013で検証した結果です。 D列からY列までは非表示にしてありますがC列の数式をZ列までコピーしています。

すると、全ての回答が全文表示されます。
  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.2

こんばんは! VBAになりますが、一例です。 データはA列の1行目からあり、B列に表示するとします。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, str As String For i = 1 To Cells(Rows.Count, "A").End(xlUp).Row For k = 1 To Len(Cells(i, "A")) str = Mid(Cells(i, "A"), k, 1) If str Like "[ヲ-ン]" Then Cells(i, "B") = Cells(i, "B") & StrConv(str, vbWide) Else Cells(i, "B") = Cells(i, "B") & str End If Next k Next i End Sub 'この行まで ※ コード内の「ヲ」と「ン」は半角で入力していますが、おそらく全角表示になると思います。 上記コードをコピー&ペースト後、半角に訂正してマクロを実行してください。m(_ _)m

すると、全ての回答が全文表示されます。
  • usami33
  • ベストアンサー率36% (808/2210)
回答No.1

同じ質問が過去にありましたよ http://okwave.jp/qa/q478209.html

すると、全ての回答が全文表示されます。

関連するQ&A

このQ&Aのポイント
  • フットスイッチFS-6とループステーションRC30を接続しましたが、Aのスイッチの反応がない問題について教えてください。
  • フットスイッチFS-6とループステーションRC30を接続した際、Aのスイッチが正常に動作しない原因について教えてください。
  • フットスイッチのBを押すとトラックが切り替わるが、Aのスイッチを押しても反応がない問題について詳細を教えてください。
回答を見る

専門家に質問してみよう