プロが教える店舗&オフィスのセキュリティ対策術

こんにちわ。
またまた質問させてください。

エクセル2000で
セルに入っている小文字のひらがなカタカナをすべて大文字に変換したいのです。
置換を利用すればいいことなのですが量が多いため
出来れば関数で行いたいのです。

チョコレート=チヨコレート
アップル=アツプル
あぁ無情=ああ無情

のように。

誰か教えてください。

A 回答 (3件)

#2で失敗談を述べた者です。

1日考えてなんとかなりそうです。7行と短く、判りやすいと思う。
A1セルに例えば「ぁつったゃささッた」と、入力する。
---
Module1に
Sub test01()
c = Array(
0, "ぁ", "あ", "っ", "つ", "ゃ", "や", "ッ", "ツ")
a = Cells(1, 1)
For i = 1 To 8 Step 2
a = Application.Substitute(a, c(i), c(i + 1))
Next i
Cells(1, 4) = a
End Sub
と入力し実行すると、D1セルが「あつつたやささツた」となる。
----
c=Array()の中の文字ペアーを増やし、
For i=1 to xxのxxを増やせば良い。
またJ=1 To ○○ を外側にネストし
a=cells(j,1)と変え、
Cells(j,4)=aにし、Next jを入れれば
何セルの文字でも変換できる。「4」はA列と離しただけ。Cells(1, 1) = aとすればA1セルに結果を戻すことも出きる。
    • good
    • 0
この回答へのお礼

お礼、遅くなりました。
ごめんなさい。

やってみたのですが、マクロを使った事が無いのでどうしても上手く出来ません。
沢山考えてくださったのに本当に申し訳リません。

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

お礼日時:2002/06/25 15:38

失敗談を。


「=SUBSTITUTE(A1,"っ","つ")」などで1セルの指定1文字ならば、全て大文字に置きかえられます。しかし小文字の数は多いので上手く行きません。
( )内で、A1,"っ","つ";A1,"ぁ","あ";...のような表記法が認められれば良いのですが、多分ない様です。
もしご存知で有ればどなたか教えてください。
    • good
    • 0
この回答へのお礼

はい!
私もその方法を最初は採ってみましたが何せ量が多いため効率がいいのか悪いのか…
あは。
ありがとうございました。

お礼日時:2002/06/14 10:12

マクロとユーザー定義関数を作ってみました。



マクロは、ツール→マクロ→マクロで『Komoji2Oomoji』を実行すれば、実行したシートの全角半角の小文字を対応する大文字に置き換えます。

ユーザー定義関数は、A1に文字があれば、別セルで
 =fnKomoji2Oomoji(A1)
のようにして使います。

回答すると半角が全角に変換されるので少し回りくどい書き方をしています。
半角カタカナ、全角カタカナ、全角ひらがなを置き換えます。


ツール→マクロ→Visual Basic Editor でVBE画面に移り、挿入→標準モジュール で標準モジュールを挿入します。
出てきたコードウインドウに下記マクロをコピーして貼り付けます。

ここから

Const Oomoji1 = "あいうえおやゆよわつアイウエオヤユヨワツカケ"
Const Komoji1 = "ぁぃぅぇぉゃゅょゎっァィゥェォャュョヮッヵヶ"
Const Oomoji2 = "アイウエオヤユヨツ"
Const Komoji2 = "ァィゥェォャュョッ"

'変換用マクロ
Sub Komoji2Oomoji()
  Dim Oomoji As String
  Dim Komoji As String
  Oomoji = Oomoji1 & StrConv(Oomoji2, vbNarrow)
  Komoji = Komoji1 & StrConv(Komoji2, vbNarrow)

  Dim rg As Range 'セル
  Dim rgText As String 'セルのテキスト
  Dim L As Integer '文字の長さ
  Dim p As Integer '検索文字の位置

  For Each rg In ActiveSheet.UsedRange
    rgText = rg.Text
    For L = 1 To Len(rgText)
      p = InStr(Komoji, Mid(rgText, L, 1))
      If p > 0 Then
        Mid(rgText, L, 1) = Mid(Oomoji, p, 1)
      End If
    Next

    If rg.Text <> rgText Then
      rg = rgText
    End If
  Next
End Sub


'変換用ユーザー定義関数
Function fnKomoji2Oomoji(moji As String)
  Dim Oomoji As String
  Dim Komoji As String
  Oomoji = Oomoji1 & StrConv(Oomoji2, vbNarrow)
  Komoji = Komoji1 & StrConv(Komoji2, vbNarrow)
  Dim L As Integer '文字の長さ
  Dim p As Integer '検索文字の位置

  For L = 1 To Len(moji)
    p = InStr(Komoji, Mid(moji, L, 1))
    If p > 0 Then
      Mid(moji, L, 1) = Mid(Oomoji, p, 1)
    End If
  Next
  fnKomoji2Oomoji = moji
End Function
    • good
    • 0
この回答へのお礼

こんにちわ。
早速のお返事ありがとうございました。
しかし・・・
VBEの事がまったく解らないのでご指示の通り貼り付けて、起動してみたのですが小文字が大文字に変換されないのです。
私の貼り付け方がいけないのかもしれません。
むぅ・・・

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

お礼日時:2002/06/14 10:10

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