こんにちは。

Excel2013を使用しています。
カタカナは全角、英数記号は半角で表示を統一したく、ネットで検索したサンプルコードを範囲や条件等を変更して下記コードを作成しました。
(サンプルコードが記載されていたページに簡易な例で全ての場合に対応できていないとの但し書きがありました。)

下記コードを実行すると、記号のうち、括弧、中点については半角表示になりますが、#については全角表示のままです。
Mid(rData, i, 1) Like "#" の Like を = に変更して、Mid(rData, i, 1) = "#" とすると、#についても半角表示になりました。
“全ての場合に対応できていない”に該当するものなのかもしれませんが、Like では希望する結果を得られない理由は何なのか気になり、質問させていただきました。
よろしくお願いします。

--------------------------------------------------
Sub test()
Dim c As Range
Dim i As Integer
Dim rData As Variant, ansData As Variant

For Each c In Range(Cells(3, "D"), Cells(Cells(Rows.Count, "D").End(xlUp).Row, "D"))
ansData = ""
For i = 1 To Len(c.Value)
rData = StrConv(c.Value, vbWide)
If Mid(rData, i, 1) Like "[A-z]" Or Mid(rData, i, 1) Like "[0-9]" _
Or Mid(rData, i, 1) Like "(" Or Mid(rData, i, 1) Like ")" _
Or Mid(rData, i, 1) Like "・" Or Mid(rData, i, 1) Like "#" Then
ansData = ansData & StrConv(Mid(rData, i, 1), vbNarrow)
Else
ansData = ansData & Mid(rData, i, 1)
End If
Next i
c.Value = ansData
Next c
End Sub

このQ&Aに関連する最新のQ&A

A 回答 (4件)

こんにちは。

お邪魔します。

テーマはLike演算子の扱い方、という理解でお応えします。

#以下Excel2010で確認した内容を基にします。

ヘルプを読んだのでしたら話は早いですが、
キャラセットとして"[角括弧]"の内側にマッチングパターンを書けば、
特別な意味を持つ記号=メタ文字【*?!#[-】も
エスケープした普通の文字として扱えます。

 If Mid(rData, i, 1) Like "[A-z]" Or Mid(rData, i, 1) Like "[0-9]" _
 Or Mid(rData, i, 1) Like "(" Or Mid(rData, i, 1) Like ")" _
 Or Mid(rData, i, 1) Like "・" Or Mid(rData, i, 1) Like "#" Then
と書く代わりに、
 If Mid(rData, i, 1) Like "[・#()0-9A-z]" Then
のように済ませるのが、Like演算子本来のマッチングの仕方で、必要十分なパターンです。
Or演算子で複数のマッチング結果を繋いでいるのは、
ビギナー向けの解説のイントロとしてはある意味正しいようにも思えますが
逆にLike演算子に熟れている人から見ると、何か訳があるのかな?と、
穿った目で見られそうな感、というか却って解り難く扱い難い気もします。
パターンがあまりにも長いとか、系統で分けて書くという時には、
Or演算子で繋ぐのもアリ、です。

一般的なパターンの書き方として、
ヘルプにもあるように文字コードの順番さえ頭に入っていれば、
"[角括弧]" の内側に 
連続した部分には区間を表す"-"ハイフンを挟むようにして、
ひたすら文字コード順に列挙していけばいいだけです。

加えて、
StrConv()関数の引数ConversionにvbNarrowを指定した場合は、
半角に変換できない文字はそのままの全角文字を返すという点や、
使われない文字コードは通常考慮する必要がない点を、
合わせて理解しておけば、簡素な(省略した)パターンを書くことが出来ます。

取り敢えず、半角・全角互換の文字種を文字コード順に並べてみます。
Excelシートに貼り付け[データ][区切り文字]を使ってスペース区切りで展開すれば、
そのまま一覧表になります。

全角 コード
‘ U+2018
’ U+2019
” U+201D
  U+3000 x
、 U+3001 x
。 U+3002 x
「 U+300C x
」 U+300D x
ァ U+30A1 x
ア U+30A2 x
ィ U+30A3 x
イ U+30A4 x
ゥ U+30A5 x
ウ U+30A6 x
ェ U+30A7 x
エ U+30A8 x
ォ U+30A9 x
オ U+30AA x
カ U+30AB x
ガ U+30AC x
キ U+30AD x
ギ U+30AE x
ク U+30AF x
グ U+30B0 x
ケ U+30B1 x
ゲ U+30B2 x
コ U+30B3 x
ゴ U+30B4 x
サ U+30B5 x
ザ U+30B6 x
シ U+30B7 x
ジ U+30B8 x
ス U+30B9 x
ズ U+30BA x
セ U+30BB x
ゼ U+30BC x
ソ U+30BD x
ゾ U+30BE x
タ U+30BF x
ダ U+30C0 x
チ U+30C1 x
ヂ U+30C2 x
ッ U+30C3 x
ツ U+30C4 x
ヅ U+30C5 x
テ U+30C6 x
デ U+30C7 x
ト U+30C8 x
ド U+30C9 x
ナ U+30CA x
ニ U+30CB x
ヌ U+30CC x
ネ U+30CD x
ノ U+30CE x
ハ U+30CF x
バ U+30D0 x
パ U+30D1 x
ヒ U+30D2 x
ビ U+30D3 x
ピ U+30D4 x
フ U+30D5 x
ブ U+30D6 x
プ U+30D7 x
ヘ U+30D8 x
ベ U+30D9 x
ペ U+30DA x
ホ U+30DB x
ボ U+30DC x
ポ U+30DD x
マ U+30DE x
ミ U+30DF x
ム U+30E0 x
メ U+30E1 x
モ U+30E2 x
ャ U+30E3 x
ヤ U+30E4 x
ュ U+30E5 x
ユ U+30E6 x
ョ U+30E7 x
ヨ U+30E8 x
ラ U+30E9 x
リ U+30EA x
ル U+30EB x
レ U+30EC x
ロ U+30ED x
ワ U+30EF x
ヲ U+30F2 x
ン U+30F3 x
・ U+30FB
! U+FF01
# U+FF03
$ U+FF04
% U+FF05
& U+FF06
( U+FF08
) U+FF09
* U+FF0A
+ U+FF0B
, U+FF0C
- U+FF0D
. U+FF0E
/ U+FF0F x
0 U+FF10
1 U+FF11
2 U+FF12
3 U+FF13
4 U+FF14
5 U+FF15
6 U+FF16
7 U+FF17
8 U+FF18
9 U+FF19
: U+FF1A
; U+FF1B
< U+FF1C
= U+FF1D
> U+FF1E
? U+FF1F
@ U+FF20
A U+FF21
B U+FF22
C U+FF23
D U+FF24
E U+FF25
F U+FF26
G U+FF27
H U+FF28
I U+FF29
J U+FF2A
K U+FF2B
L U+FF2C
M U+FF2D
N U+FF2E
O U+FF2F
P U+FF30
Q U+FF31
R U+FF32
S U+FF33
T U+FF34
U U+FF35
V U+FF36
W U+FF37
X U+FF38
Y U+FF39
Z U+FF3A
[ U+FF3B
] U+FF3D
^ U+FF3E
_ U+FF3F
a U+FF41
b U+FF42
c U+FF43
d U+FF44
e U+FF45
f U+FF46
g U+FF47
h U+FF48
i U+FF49
j U+FF4A
k U+FF4B
l U+FF4C
m U+FF4D
n U+FF4E
o U+FF4F
p U+FF50
q U+FF51
r U+FF52
s U+FF53
t U+FF54
u U+FF55
v U+FF56
w U+FF57
x U+FF58
y U+FF59
z U+FF5A
{ U+FF5B
| U+FF5C x
} U+FF5D
~ U+FF5E x
¥ U+FFE5

(上から4番目は全角空白)
(\から\ \から¥ のように全→半、半→全と変換を繰り返すと違う文字になるもの、
 StrConv()関数で変換できないもの、は省く)
(教えて!gooのIDでの投稿に際し、すべての文字種が正しく表示できるかは未確認)
(もし怪しいものがあれば、コードを参照してIMEパッド(Unicode)等で確認してください)

こちらで試しに仮定したものですが、
抽出対象から外す(半角に置換しない)文字種
(全角空白、句読点、かぎ括弧【 、。「」】全角カタカナ【ァ-ン】他【/|~】)
について、上の表での3列めに "x"を付けてみました。
この設定でのパターンは
 str Like "[‘-" & ChrW(&H201D) & "・-.0-{}¥]"
のように書くことも出来ます。
本来は "[‘-”・-.0-{}¥]" ですが、
VBEに全角の”をタイプすることが出来ない為、
ChrW()関数を使って代用しています。
例示としては「ただ列挙するだけなんです」と強調する意図です。

また、上の表を見ながら、
"[A-z]"
というパターンを見直すと、実はこれ、全角アルファベットとイコールでないことに気付くと思います。
余分な文字[]^_を拾っちゃいますから、
"[A-Za-z]"
という風に、無駄なく正確に全角アルファベットを指定してみようかな?とか、
コツさえ掴めば、色々な工夫が出来るようになると思います。

"簡易な例"という説明文の意味する、簡易と簡易でないものの違いは
以上の説明で理解できるのではないでしょうか?

尚、
ご提示のコードは英数字と幾つかの記号を 半角に置換するコードです。
カタカナは既に全角で書かれている、のか、
これから書き足す、のか、判りませんが、もしも、
これから半角カナの全角化に取り組むのでしたら、
■半角カナは一文字ずつ全角に置換することは出来ない■と覚えておいて下さい。
濁点・半濁点のカナは全角では一文字ですが、半角では二文字です。

そういった見通しや汎用性を考慮して、
現状の一文字ずつ置換する、というやり方から発展して、
置換対象の塊りを捉えて、塊りごと置換するような課題に挑戦することをお奨めしておきます。
例えば、
"AbcアイウXyzワヲン"
であれば、
"Abc" を "Abc"
"Xyz" を "Xyz"
纏めて置換する、ということです。

最後に、
Like演算子でのマッチングは世間で思われているより有用ですので、
是非この機会に熟れておいて貰えればと思います。
その先に余裕が出来たり不満が出て来たりしたら、
正規表現(VBAではVBScript.RegExpのこと)についても調べて
理解できたものを書いてみるといいと思います。

長、失礼しました。以上です。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

今回の質問の意図するところを全て書いていただいたような回答で大変わかりやすかったです。
Or演算子を使わない書き方も教えていただき、勉強になります。
コードがスッキリまとまっていると、あとで見直したり変更したりする場合もわかりやすくていいです。

英数字といくつかの記号を半角にする前に
rData = StrConv(c.Value, vbWide) で
一旦全てを全角にしているので、質問文に記載したコードはとりあえず完成させることができました。

ご丁寧な回答ありがとうございました。

お礼日時:2014/08/29 16:05

No2です。



半角にしたい記号が増えた場合の事を考えると、一度すべて半角にして、その後カタカナだけ全角に戻した方がよいのではないかと思います。

こちらのページのコードは参考にならないでしょうか
http://hichon.cocolog-nifty.com/blog/2011/09/exc …
    • good
    • 0
この回答へのお礼

再度の回答ありがとうございます。

教えていただいたURLに記載されたコードは私も質問投稿前に目にしました。
質問文に記載している方法とは逆の方法ですが、いろんな方法があるということで、時間が空いたときにでもこの方法でのコードを勉強がてら書いてみようと思っています。

ありがとうございました。

お礼日時:2014/08/29 15:50

「*」、「?」、「#」そのものをLikeしたいときには[]で囲んでください。

#でしたら

Mid(rData, i, 1) Like "[#]" Then

のようにしてください。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。

先の回答者様から Like のヘルプに記載があるとのことで、ヘルプを読み、Like を使う場合の方法として[ ]で囲んで試してみたところ、うまくいきました。

ありがとうございました。

お礼日時:2014/08/28 16:24

Likeのヘルプを読めば記載あります。



「#」は、任意の 1 文字の数字 (0-9)を意味します。

つまり、
Mid(rData, i, 1) Like "#"
は0~9の何れかの時、Trueになります。

※Excelの関数では*が任意の文字、?が任意の1文字の2種類しかありませんが、VBAでは、#も存在するわけです。
    • good
    • 0
この回答へのお礼

早速、回答いただきましてありがとうございます。

Like のヘルプ、読みました。
Like はExcelの関数で文字列をアスタリスクで囲んだときと同じという程度にしか考えていなかったので、勉強になりました。

ありがとうございました。

お礼日時:2014/08/28 15:28

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qなぜ、半角英数とひらがなの切り替えは半角/全角?

以下、Office IMEの話とします。

半角/全角が推奨されているようですが、Caps Lock 英数(以下、英数)も使えば良いと思います。理由は、キーボードでは英数の方が半角/全角よりもホームポジションからだいぶ近い位置にあり、使わないと作業ロスだからです。

なぜ、半角/全角が推奨されているのかというと、パソコン初心者・初級者が、英数で切り替えようとして、入力モードが予期せぬ状態になった時、自分で元に戻せなくなってしまうからではないでしょうか。ですので、入力モードをよく理解している人(自分で元に戻せる人)は、その切り替えに英数を使っても何の問題もないのでは。私は英数で何万回と切り替えてきましたが、問題なくできました。

前置きが長くなりましたが、他に何か半角/全角が推奨される理由はあるのでしょうか?

Aベストアンサー

Capsはオートコレクトでしょうかね?

使うには、何の問題もありませんよ。ただし、推奨するためには、推奨した手段が必ずそうなることを前提とする必要がありますが・・・この場合、質問者様は、もとに戻せなくなったときといった書き方をされているように、その限りではないのです。

だから、推奨はしません。推奨するということは、誰でも使えばそれが供給されることを示します。しかし、質問の場合は、便利だからという前提です。
推奨というのは、アカウント制御、プロファイル情報などに影響を与えない方法であり、そのユーザーの利用に支障を及ぼす設定を変更しないで共通に使える機能をさします。


私は、IMEでもATOKモード使いなので、無変換で半角英数字を入れています。これも便利です。
後は、Shiftを押しながら、入力すると、半角大文字が入力出来る機能は頻繁に使います。たまに半角/全角も使います。

ちなみに、Capsでというのは、オートコレクトオプション機能の一つです。設定制御の変更によって、全角英数になることもあります。ただ、実装形態をご存じないなら、人にはお勧めしない方が良いですよ。


尚、無変換はATOKが確か結構昔かな?備えていた機能です。もういつからかは忘れましたけど、最初(私がATOKに触れたのはATOK2.x世代で、当時はPC98)からだったかも・・・。Shift無変換大文字は、2000年代に入ってからの機能のように思います。まあ、後から機能の多くは、どういう制御によって成り立つかを知らないと、出来なくなった時に、困ることになります。私の場合は、変換できなければ、無変換に戻せば良いという前提ですし、その時点から、半角全角で切り替えて使いますけど・・・。ある特定の機能に依存する人は、その制御に頼ってしまうため、それがあれば高速だが、うまく機能しないと分かると、遅くなる(パニックになる人もいる)と言う欠点があります。

だから、基本を使えること。そして、応用はあくまで応用であり、自分で開拓するという前提になければならないことを知っていることが重要です。

基本的な使い方を覚えれば、誰でもその設定さえ変えれば、自分流で使うことができます。キーに与える命令もショートカットもIMEのメニューから変更することも出来るのです。

しかし、基本操作を知らないでこの方法がここでは使える。あそこでも使えると使っていると、一部実装形態の古いアプリケーションなどで、本来の使い方が出来ず戸惑う恐れがあります。そのため、基本的に教える場合は、原則のルールに沿った教え方をするのが、教える側としてのルールです。


それに慣れたときに、こういう方法もあってこの方が楽なんだよと教えると親切となります。
他にも、変換方法はたくさんあります。Wordなどとの組み合わせでは、後変換をキーボードだけで早急に行うことも出来ます。
IMEモードが直接入力でなければ、半角を全角に変換、またはその逆も比較的簡単にできます。


まあ、慣れているからこそ、これを教えるべきだと思われるのでしょうけど・・・私の経験では、人からショートカット(自分でしっかり開拓せず近道)で何らかの簡単な手段を教わった人は、たいていそれが使えないときに、トラブルとして連絡してくる人に名が上がるのです。これは、サポートをしたことがある人だとあるあるネタなのですけど。ずっと教えてくれた人が、サポートするなら、良いですけどそういうものではないですから。特に、少しパソコンが出来る人が、パソコンを弄って・・・お手上げになってからというのも・・・。

推奨されるというのは、それが普遍であり不変であることを示します。一般に素人の全てが、自分と同じレベルになるわけではありませんから、ダブルスタンダードで推奨(最初はAをステップアップしてBを推奨するという方法)を作るのは好ましくありません。
ステップアップする場合は、そのBという項目が、何によってどう動くかを知っているか、こうすれば出来る、出来ないという点を知っていなければいけません。Bを教えるのではなく、Bの制御をどうやって変えるかを、教えて、そこから本人が、この方が楽だと気づくか、それを熟知したタイミングを見て、実はこういう機能があるのだよと教えるのが本来の教え方です。これが、付加価値(オプション)なのです。

いかがでしょうか?

Capsはオートコレクトでしょうかね?

使うには、何の問題もありませんよ。ただし、推奨するためには、推奨した手段が必ずそうなることを前提とする必要がありますが・・・この場合、質問者様は、もとに戻せなくなったときといった書き方をされているように、その限りではないのです。

だから、推奨はしません。推奨するということは、誰でも使えばそれが供給されることを示します。しかし、質問の場合は、便利だからという前提です。
推奨というのは、アカウント制御、プロファイル情報などに影響を与えない方法...続きを読む

QEXCEL 特定の文字+英数文字を全て半角に自動で変換したい

お世話になります。
特定の文字+英数文字を全て半角に自動で変換される様にしたいです。

1つのセルに以下の様な改行を含んだ文字が登録されたとします。

<登録文字>
赤:1
青:2

この文字を以下のように":"+"数字"の部分を自動で半角に変換したいです。
変換の対象はセル番号B1:H31の範囲となります。

<変換後文字>
赤:1
青:2

申し訳ございませんがご教授の程よろしくお願いします。

Aベストアンサー

VBAの一例です。
(1)シートタブ上で右クリック→コード表示
(3)以下のソースを右枠に貼り付け→alt+F4キー押下
 Private Sub Worksheet_Change(ByVal Target As Range)
 Dim myWK As String
 On Error GoTo error
 If Intersect(Target, Range("B1:H31")) Is Nothing Then Exit Sub
  myWK = Target.Value
  Application.EnableEvents = False
Target.Value = StrConv(myWK, 8)
Application.EnableEvents = True
 error:
 End Sub

Q半角/全角キーで入力モードの切り替えができません

ひらがな入力モードと英数入力モードの切り替えを半角/全角キーで行っていたのですが、半角/全角キーを押しても切り替えができず、「‘」が入力されます。どうすれば元のように切り替えができるようになるでしょうか。

Aベストアンサー

まずWindowsのメモ帳などのテキストエディタで Alt + 半角/全角 で切り換えられないか試してみてください。この場合はコントロールパネルからMS-IMEの設定を変更することが可能です。

これができない場合は、Internet Explorerなど特定のアプリケーションで問題が発生する場合と、メモ帳などのテキストエディタを含めてすべての場面で発生する場合があります。半角英数の@を入力すればわかります。

特定のアプリケーションでキーボード レイアウトが英語になる

http://support.microsoft.com/kb/880629/ja

英語キーボードと日本語キーボードの違い

http://unit.aist.go.jp/itri/knoppix/howto/keyboard/keyboard.htm

すべてのアプリケーションでキーボードレイアウトが英語になった場合は、別の処置が必要です。

http://www.pfu.fujitsu.com/hhkeyboard/hhkb_support/faq_kokuin.html

まずWindowsのメモ帳などのテキストエディタで Alt + 半角/全角 で切り換えられないか試してみてください。この場合はコントロールパネルからMS-IMEの設定を変更することが可能です。

これができない場合は、Internet Explorerなど特定のアプリケーションで問題が発生する場合と、メモ帳などのテキストエディタを含めてすべての場面で発生する場合があります。半角英数の@を入力すればわかります。

特定のアプリケーションでキーボード レイアウトが英語になる

http://support.microsoft.com/kb/880629/ja

英...続きを読む

Q全角英数⇔半角英数に簡単にする方法

宜しくお願いします。

会社の資料でよく、数字、英文字の半角、全角が統一されていないと怒られます。

ワード、エクセル、パワーポイントで、英数字の全角、半角を簡単に統一する方法を
教えて頂けないでしょうか?(基本英数字は半角にそろえたいです)

一つ一つ、置換で行ったり、エクセルでは関数を使えばできるのは調べましたが
一括返還のショートカットキーのようなものや他に方法があれば教えてください。

宜しくお願いします。

Aベストアンサー

> ワード、エクセル、パワーポイントで、英数字の全角、半角を簡単に統一する方法を
> 教えて頂けないでしょうか?(基本英数字は半角にそろえたいです)

> 一つ一つ、置換で行ったり、エクセルでは関数を使えばできるのは調べましたが
> 一括返還のショートカットキーのようなものや他に方法があれば教えてください。

Wordの場合は、「置換」機能以外に「文字種の変換」という機能があります。
下記URLのページは、「検索」機能と「文字種の変換」機能を使って、英数字だけを半角に変換する方法を解説されています。

「Word:英数字だけを半角に変換するには?(カタカナは半角にしない)」
http://www.office-qa.com/Word/wd209.htm


英数混じりの日本文で、英数字を常に半角で入力するために、
MS-IMEの「プロパティ」で、「英字」と「数字」を「常に半角に変換する」に設定します。

「IME(日本語入力機能)の設定を変えて英数字を常に半角で入力する」
http://iinamotto.com/2013/04/724.html

> ワード、エクセル、パワーポイントで、英数字の全角、半角を簡単に統一する方法を
> 教えて頂けないでしょうか?(基本英数字は半角にそろえたいです)

> 一つ一つ、置換で行ったり、エクセルでは関数を使えばできるのは調べましたが
> 一括返還のショートカットキーのようなものや他に方法があれば教えてください。

Wordの場合は、「置換」機能以外に「文字種の変換」という機能があります。
下記URLのページは、「検索」機能と「文字種の変換」機能を使って、英数字だけを半角に変換する方法を解説されてい...続きを読む

Q全角、半角切り替えで??

 全角、半角の切り替えで不明点がでました。
ご存知の方は教えてください。
ややこしくてスミマセン。
条件はwindows-XPのIME2002 
standard v8.1 です。


・言語バーに「あ」がでた状態で、[英数]キーを
 押すと全角「A」になる。ここで「ひらがな」
 キーと「英数キーで「あ」と全角「A」が切り変え
 が自由に出来る。また、「半角キー」で半角英数?
 「A」も切り替えられる。

・しかし、これらやっていて、「_A」がでると、
 もうそれからは全角「A」に戻らない。
・全角「A」や「あ」の場所をマウスでクリック
 して確認すると、「A」では「直接入力」に、
 「_A」では「半角英数」なっている。


 これってどうなっているのでしょか?
 「A」と「_A」の違いは何でしょうか??

Aベストアンサー

はじめまして。

「A」と「_A」の違いということでしょうか?
「A」 :直接入力
「_A」:半角英数入力
です。直接入力で入力すると強制的に半角英数字で確定された状態で入力されます。半角英数で入力すると、ファンクションキーで変換(全角にしたり、大文字にしたりとかいろいろ)することができます。

ですので、入力する場面によって使い分ければよいのではないかとと思います。

私の場合は、半角英数や全角英数ははほとんど使わないので(いちいち切り替えるのも面倒ですし)、入力モードの切り替えはほとんど「半角/全角」キーで行っています。

回答はずしていたら申し訳ありません。失礼しました。

Qエクセル:半角カナを全角に、半角英数はそのままに。

エクセル:半角カナを全角に、半角英数はそのままに。

ひらがな・漢字・半角カナ・半角英数が混じったセルが縦に沢山あります。
半角カナだけを全角にし、半角英数はそのままにしたいのですが、JISでは全て全角になってしまいます。
どなたか良い関数を教えてください。

Aベストアンサー

ご使用のエクセルのバージョンが提示されていないのですが、エクセル2007ならネストの制限にかからないので、以下のような数式1つで変換することができます(A2セルにデータがある場合)。

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(JIS(A2),"0",0),"1",1),"2",2),"3",3),"4",4),"5",5),"6",6),"7",7),"8",8),"9",9)

古いバージョンのエクセルで変換したいなら、B2セルに「=JIS(A2)」
C2セルに以下のような式を入力し、右方向にL列まで、下方向にデータ数分だけオートフィルすればL列に変換後のデータが表示されます。

=SUBSTITUTE(B2,TEXT(COLUMN(A1)-1,"[DBNum3]0"),COLUMN(A1)-1)

Q【win8】半角全角切り替えをアプリ選択で自動化

半角全角を、アプリケーションごとに自動に切り替えるよう割り振れないでしょうか。
例えばブラウザをクリックしてアクティブにしたら、全角へと自動で切り替わり、photoshopをアクティブにしたら半角に、という具合に。
その場合、アクティブにしている時ずっと半角or全角ではなく、アクティブにした後は、手動でも切り替えられるようにできればなお良いです。

ちなみに具体的な状況としては、skypeでチャットしながらphotohop cs6で作業する時、skypeでは全角で打っているのですが、photoshopではショートカットキー入力のため半角にしたいからです。(全角でショートカットを打つと左上に入力したものが表示されてしまいます)

Aベストアンサー

IMEを右クリックあるいはコントロールパネルの言語で「言語」のダイアログを表示し、左の「詳細設定」をクリック、「入力方式の切り替え」の「アプリウィンドごとに異なる入力方式を設定する」にチェックを入れる。
これでアプリを起動した時に入力方式を設定すれば、次に起動した時からその設定で立ち上がると思いますが。
試してみてください。

Qエクセルで英数のみを半角に変換するマクロ

エクセル2003を使っています
エクセルで英数のみを半角に変換するマクロの作り方を教えてください。
予め複数のセルを選択しておいて、それらに含まれる文字列の英数のみを半角に(カタカナは全角のまま)変換したいのです。
以前他のサイトで同様の機能のユーザー関数の作り方は見つけたのですが、マクロにする方法がわかりません。
よろしくお願いします。

Aベストアンサー

こんにちは。

まず、#3 のコードでバグ修正します。TextCompare ではマズかったです...

    SourceText = Replace$(SourceText, _
               M.Value, _
               StrConv(M.Value, ConvMode), _
               Compare:=vbTextCompare)
     ↓
    SourceText = Replace$(SourceText, _
               M.Value, _
               StrConv(M.Value, ConvMode))

次に...

> 英数、日本語、半角全角・大文字小文字が入り乱れていて、同じ曲でも
> 表記方法がバラバラなため、その表記を統一したいのです。

このような質問の核心部分は最初に提示すべきでしたね...

> それらに含まれる文字列の英数のみを半角に(カタカナは全角のまま)
> 変換したいのです。

目的が提示されると、これは手段の一部でしかなくなってしまいました。
何をしたいのか? を最初に明示しないと不要に補足+再回答を繰り返すこと
になります。

で実現方法ですが...

Sub Sample()
  ' 半角化できるものは全て半角化する+アルファベットは一度大文字へ
  Call RegStrConvRng(Selection, ".*", vbNarrow + vbUpperCase)
  ’半角カナは全て全角へ
  Call RegStrConvRng(Selection, "[\uff66-\uff9f]+", vbWide)
  ' 半角アルファベットの頭のみ大文字へ
  Call RegStrConvRng(Selection, "[A-z']+", vbProperCase)
End Sub

これで次のように変換されます。一応希望どおりですか?

i can’t speak english.
 ↓
I Can't Speak English.

ちなみに、頭のみ大文字は、単語の頭を大文字、それに続く文字を小文字
です。つまり、

this is a pen. → This Is A Pen.

です。これを This is a pen. にしたいというなら、正規表現のパターンの
設定次第で可能ですが、今回のご質問趣旨からはずれますからご自分で
お調べ下さい。

こんにちは。

まず、#3 のコードでバグ修正します。TextCompare ではマズかったです...

    SourceText = Replace$(SourceText, _
               M.Value, _
               StrConv(M.Value, ConvMode), _
               Compare:=vbTextCompare)
     ↓
    SourceText = Replace$(SourceText, _
               M.Value, _
               StrConv(M.Value, ConvMode))

次に...

> 英数、日本語...続きを読む

QSH903iTVで数字の全角半角切り替え入力

SH903iTVでメール等の文字入力で、数字を入力する際の全角/半角の切り替え方法を教えて下さい。

Aベストアンサー

半角数字は、通常の文字切り替えで直接入力できるようになります。
全角数字は、全角英数モードで英字の後に表示されるのを利用するか、
あるいは漢字入力の際の「カナ英数変換」を利用するしかないようです。

QExcel 自動的に半角英数になります!

あるセルに移動すると、自動的に半角英数になる設定がされているようです。
直接入力で連続して入力していきたいのに、セル毎にEnterキーで確定しないと
次のセルに移動できません!面倒です!!
直し方を教えて下さい。

Aベストアンサー

上のメニューから

データ>入力規則>日本語入力

でIMEの状態を決めることが出来ます。何も制限したくなければ「コントロールなし」を選択してください。

元々は「コントロールなし」です。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報