Excelノート 15-03 セルのデータ

HOME  検索  索引  もくじ  関数目次  前ページへ  次ページへ

タイトル欄のアドレスは、エクセルファンクラブの該当する頁へのリンク先です。
詳しい事は、こちらの
お願いをご覧になってください。

41 選択範囲の数値の、マイナスとプラスを入れ替えるには
42 選択範囲のデータを全てつなげるには
43 他のセルにセルの番地を入力し、その値を使ってセルを参照するには?
44 同一セル内で、文字ピッチを変えるには
45 選択範囲の半角・全角数字だけを、漢数字に置き換えるには
46 セル内の改行を<BR>に置換するには?
47 選択範囲のひらがな・カタカナ・漢字を、全て半角カタカナにするには
48 文字列、数値(数字)の混在したデータから、数値だけを取り出すには?
49 文字列の中の、カタカナを判別するには?
50 数字を漢数字にするには?
51 ( )を、縦書きで表示するには?
52 入力した計算式の計算結果を、他のセルに表示させるには?
53 選択範囲のセル内で、指定の文字だけフォントを変更するには?
54 濁点(半濁点)の付いた文字を、2文字に分割するには?
55 セル内の指定の文字だけ切り取るには?
56 カタカナをローマ字(アルファベット)に変換するには?
57 ローマ字(アルファベット)をカタカナに変換するには?
58 セルに入力した計算式と、その結果をステータスバーに表示するには?
59 住所を、都道府県・区市町村・それ以降に分割するには?
60 干支を表示するには?

41 選択範囲の数値の、マイナスとプラスを入れ替えるには
例えば、選択した範囲のセルの値が、「10」の場合「-10」に、「-10」の場合「10」に変更します。
Excel2002確認済
Sub test_by1()
 Dim c As Range
 If Not TypeName(Selection) = "Range" Then Exit Sub
 On Error Resume Next
 Application.ScreenUpdating = False
 For Each c In Selection
  If Not c.HasFormula Then
   If Not IsDate(c.Value) Then c.Value = c.Value * -1
  End If
 Next
 Application.ScreenUpdating = True
End Sub

’選択範囲が広いときはこちらの方がちょっとスピードアップになります♪
Sub test_by2()
 Dim c As Range
 If Not TypeName(Selection) = "Range" Then Exit Sub
 On Error Resume Next
 Application.ScreenUpdating = False
 With Selection
  If .Cells.Count = 1 Then
   If Not .HasFormula Then
    If Not IsDate(.Value) Then .Value = .Value * -1
   End If
  Else
   For Each c In .SpecialCells(xlCellTypeConstants)
    If Not IsDate(c.Value) Then c.Value = c.Value * -1
   Next
  End If
 End With
 Application.ScreenUpdating = True
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
42 選択範囲のデータを全てつなげるには
Excel2002確認済
 Sub miko_test()
  Dim c As Range, d As String
  
'選択対象がセルでなければ、マクロを中止
  If Not TypeName(Selection) = "Range" Then Exit Sub
  For Each c In Selection        
'選択したセル全てを処理
   d = d & c
  Next
  MsgBox d
 End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
43 他のセルにセルの番地を入力し、その値を使ってセルを参照するには?
Excel97、2000共通
A1に B と入力して、他のセルにA1の値を使った数式を入力し、Sheet2のB10セルの値を参照します。
 =INDIRECT("Sheet2!"& A1&10) 
A1に、sheet2 A2に、B A3に 10 と入れ、他のセルにその値を使ってSheet2のB10セルを参照します。
 Sub test5()
  Dim WS As String
  If ActiveCell.Column = 1 And ActiveCell.Row < 4 Then Exit Sub
  WS = Worksheets("sheet1").Range("A1")
  ActiveCell = Worksheets(WS).Range(Range("A2") & Range("A3"))
 End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
44 同一セル内で、文字ピッチを変えるには
http://cgi.fuji.ne.jp/~fj2094/cgi-bin5/wwwlng.cgi?print+200110/01100058.txt
 「同一セル内で、文字ピッチを変えるには」 【その他ラウンジ】
文字の間にスペース入れて、スペースを選択してポイント数を変更します。
上の方法を、マクロにしました。
入力したセルを選択して実行すると、文字と文字の間にスペースを入れて、指定したポイントの大きさにします。
Sub miko_test()
  Dim i As Integer, j As Integer, k As Integer, N() As String, M As String, s As Single
  ReDim N(Len(ActiveCell.Value))             
 '変数の個数を設定
  For i = 1 To Len(ActiveCell.Value)
    N(i) = Mid(ActiveCell.Value, i, 1)     
 '1文字ずつ変数に格納
  Next
  For i = Len(ActiveCell.Value) To 1 Step -1
    M = N(i) & " " & M                 
 '文字の間にスペースを挿入
  Next
  ActiveCell = Left(M, Len(ActiveCell.Value) * 2 - 1)
  k = 1
  For j = 1 To Len(ActiveCell.Value) - 1 Step 2
    s = Application.InputBox(Prompt:= _
         k & "文字目と、" & k + 1 & "文字目のピッチを、ポイントで入力してください", Type:=1)
    ActiveCell.Characters(Start:=j + 1, Length:=1).Font.Size = s
    k = k + 1
  Next
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
45 選択範囲の半角・全角数字だけを、漢数字に置き換えるには
選択したセル範囲(飛び飛びのセルでも可)の、数字だけを一発で漢数字に置きかえます。
Sub 数字を漢数字に()
 Dim c As Range, i As Long, j As Integer, k As Integer, N As String
 For Each c In Selection
  N = ""
  For k = 1 To Len(c)
   Select Case Mid(c, k, 1)
    Case 1 Or "1"
     N = N & "一"
    Case 2 Or "2"
     N = N & "二"
    Case 3 Or "3"
     N = N & "三"
    Case 4 Or "4"
     N = N & "三"
    Case 5 Or "5"
     N = N & "五"
    Case 6 Or "6"
     N = N & "六"
    Case 7 Or "7"
     N = N & "七"
    Case 8 Or "8"
     N = N & "八"
    Case 9 Or "9"
     N = N & "九"
    Case 0 Or "0"
     N = N & "○"
    Case Else
     N = N & Mid(c, k, 1)
   End Select
  Next k
  c = N
 Next
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
46 セル内の改行を<BR>に置換するには?
 「セル内の改行を<BR>に置換したい」 【VBAラウンジ】
1.Ctrl+H (メニュー[編集]-[置換])
2.[検索する文字列]で Ctrl+J を一回
3.[置換後の文字列]で <BR> と入力
4.[完全に同一なセルだけを検索する]のチェックをオフに
5.[すべて置換]ボタンをクリック
Sub test_A()
 Dim eCell As Range
 For Each eCell In Selection.Cells
  eCell.Value = WorksheetFunction.Substitute(eCell.Value, Chr(10), "<BR>")
 Next
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
Sub test_J()
 Selection.Replace What:=Chr(10), Replacement:="<BR>", LookAt:=xlPart
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
47 選択範囲のひらがな・カタカナ・漢字を、全て半角カタカナにするには
Excel97、2000、2002共通
A1セルの値を、他のセルに半角カタカナで表示します。
=ASC(PHONETIC(A1))
選択したセルの右側のセルをクリアして、半角カタカナを表示します。
漢字の場合は、【書式】【ふりがな】【表示】で表示されるフリガナになります。
複数範囲の選択にも、対応しています。   

Sub 漢字やひらがな、カタカナを半角カタカナに()
 Dim c As Range
 '選択対象がセルでなければ、マクロを中止
 If Not TypeName(Selection) = "Range" Then Exit Sub
 For Each c In Selection
'選択したセル全てを処理
  c.Offset(0, 1) = ""
'右のセルをクリア
  c.Offset(0, 1).Value = c.Phonetic.Text
'フリガナを右のセルに表示
  If c.Offset(0, 1) = "" Then c.Offset(0, 1) = c
'ひらがなはそのままコピー
  
'半角カタカナに変換
  c.Offset(0, 1).Value = StrConv(c.Offset(0, 1).Value, vbNarrow + vbKatakana)
 Next
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
48 文字列、数値(数字)の混在したデータから、数値だけを取り出すには?
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200112/01120105.txt
 「文字列の中にある数字を抽出するには」 【VBAラウンジ】
対象のセル範囲を選択してから、実行してください。  右側のセルに数字を書き出します。
Sub test03()
 Dim c As Range, i As Integer
 For Each c In Selection
  For i = 1 To Len(c.Value)
   If IsNumeric(Mid(c.Value, i, 1)) Then
    c.Offset(, 1).Value = c.Offset(, 1).Value & Mid(c.Value, i, 1)
   End If
  Next
 Next c
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
49 文字列の中の、カタカナを判別するには?
http://www.ae.wakwak.com/~efc21/cgi-bin/wwwlng.cgi?print+200203/02030012.txt
 「文字列中の文字の種別を判別するには?」 【VBAラウンジ】
Sub test1()
 Dim wk01 As String, Len01 As String, i01 As Integer
 wk01 = "山田ハナ子"
 Len01 = Len(wk01)
 For i01 = 1 To Len01
  If StrConv(Mid(wk01, i01, 1), vbHiragana) = Mid(wk01, i01, 1) Then
   MsgBox "変換されなかったからカタカナじゃないよ"
  Else
   MsgBox "変換されたね!カタカナだ"
  End If
 Next i01
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
選択されたセル範囲の文字をカタカナか、それ以外かに判別してDebug.Printします。
Debug.Printは、Ctrl+Gでイミディエイトウインドウを出して確認します。
Sub test2()
 Dim rng As Range, i As Long, tmp As String
 For Each rng In Selection
  If Not IsEmpty(rng.Value) Then
   Debug.Print "★" & rng.Address(0, 0)
   For i = 1 To Len(rng.Value)
    Debug.Print Mid(rng, i, 1);
    tmp = Hex(Asc(StrConv(Mid(rng, i, 1), vbWide)))
    Select Case tmp
     Case "8341" To "8393"
      Debug.Print " =カタカナ"
     Case Else
      Debug.Print " =それ以外"
    End Select
   Next
   Debug.Print "---------------------"
  End If
 Next
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
Sub test3()
 Dim wk01 As String, Len01 As Integer, i01 As Integer
 Dim myMsg As String, myFlg As Boolean
 wk01 = "山田ハナ子"
 Len01 = Len(wk01)
 For i01 = 1 To Len01
  If StrConv(Mid(wk01, i01, 1), vbHiragana) <> Mid(wk01, i01, 1) Then
   myMsg = myMsg & i01 & "、"
   myFlg = True
  End If
 Next i01
 If myFlg = True Then
  MsgBox "「" & wk01 & "」" & Chr(13) & _
  myMsg & "文字目にカタカナをミッケ!", 64
 Else
  MsgBox "「" & wk01 & "」にカタカナはないよ", 64
 End If
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
50 数字を漢数字にするには?
A1セルの数字を漢数字にして表示します
=SUBSTITUTE(SUBSTITUTE(NUMBERSTRING(A1,2),"阡","千"),"伍","五")
Excel97、2000、2002共通
【書式】【セル】【表示形式】で、【ユーザー定義関数】を選択し、種類に
 [DBNum1] と入れると 一万二千三百四十五
 [DBNum2]         壱萬弐阡参百四拾伍
 [DBNum3]         1万2千3百4十5
と表示されます
51 ( )を、縦書きで表示するには?
1. ( ) を全角で入力します。
2. 【書式】【セル】【配置】の【方向】で縦書きの「文字列」を選択します。
     ※ ( )が半角だと、うまく縦書きの表示ができません。
52 入力した計算式の計算結果を、他のセルに表示させるには?
A1に、5*4/2 と入力し、C1に、「10」と表示します。
Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Address = "$A$1" Then
  Range("C1").FormulaR1C1 = "=ROUND(" & Target.Value & ",0)"
 End If
End Sub
53 選択範囲のセル内で、指定の文字だけフォントを変更するには?
Sub test() '選択範囲の指定の文字を、上付き、太字に
 Dim c As Range, cm As Range
 Dim i As Integer, aa As Variant, bb As Variant
 Application.ScreenUpdating = False
 aa = Application.InputBox(Prompt:="上付きにする文字を1文字入力してください。")
 bb = Application.InputBox(Prompt:="太字にする文字を1文字入力してください。")
 For Each c In Selection
  Set cm = c.MergeArea
  For i = 1 To Len(cm)
   If Mid(c, i, 1) = aa Then
    c.Characters(Start:=i, Length:=1).Font.Superscript = True
'上付き
   ElseIf Mid(c, i, 1) = bb Then
    c.Characters(Start:=i, Length:=1).Font.FontStyle = "太字"
   End If
  Next
 Next
 Application.ScreenUpdating = True
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
54 濁点(半濁点)の付いた文字を、2文字に分割するには?
http://cgi.fuji.ne.jp/~fj2094/cgi-bin1/wwwlng.cgi?print+200205/02050034.txt 
 「濁点の文字を2文字にするには?」 【編集ラウンジ】
Sub test()
 Dim arr1 As Variant
 Dim arr2 As Variant
 Dim i As Integer
 Application.ScreenUpdating = False
 arr1 = Array("が", "ぎ", "ぐ", "げ", "ご", _
         "ガ", "ギ", "グ", "ゲ", "ゴ", _
         "ざ", "じ", "ず", "ぜ", "ぞ", _
         "ザ", "ジ", "ズ", "ゼ", "ゾ", _
         "だ", "ぢ", "づ", "で", "ど", _
         "ダ", "ヂ", "ヅ", "デ", "ド", _
         "ば", "び", "ぶ", "べ", "ぼ", _
         "バ", "ビ", "ブ", "ベ", "ボ", "ヴ", _
         "ぱ", "ぴ", "ぷ", "ぺ", "ぽ", _
         "パ", "ピ", "プ", "ペ", "ポ")
 arr2 = Array("か", "き", "く", "け", "こ", _
          "カ", "キ", "ク", "ケ", "コ", _
          "さ", "し", "す", "せ", "そ", _
          "サ", "シ", "ス", "セ", "ソ", _
          "た", "ち", "つ", "て", "と", _
          "タ", "チ", "ツ", "テ", "ト", _
          "は", "ひ", "ふ", "へ", "ほ", _
          "ハ", "ヒ", "フ", "ヘ", "ホ", "ウ", _
          "は", "ひ", "ふ", "へ", "ほ", _
          "ハ", "ヒ", "フ", "ヘ", "ホ")
 With ActiveSheet.Cells       
  
’arr1で指定した文字列の1文字目から最終-10文字目まで繰り返し
  For i = LBound(arr1) To UBound(arr1) - 10 
   
’濁点無しの文字列に置き換え
   .Replace What:=arr1(i), Replacement:=arr2(i) & "゛", LookAt:=xlPart
  Next   
  
’arr1で指定した文字列の最終-9文字目から最終まで繰り返し
  For i = UBound(arr1) - 9 To UBound(arr1)
  
 ’半濁点無しの文字列に置き換え
   .Replace What:=arr1(i), Replacement:=arr2(i) & "゜", LookAt:=xlPart
  Next 
 End With
 Application.ScreenUpdating = True
End Sub

  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
55 セル内の指定の文字だけ切り取る(削除)には?
処理したいセルを選択し(複数選択可) マクロを実行すると、切り取る文字列を訊いてきますので、
任意の文字列を入力してください。
Sub miko_test()
 Dim a As String
 Dim c As Range, i As Integer
 a = Application.InputBox(Prompt:="切り取る文字を入力してください", Type:=2)
 '選択対象がセルでなければ、マクロを中止
 If Not TypeName(Selection) = "Range" Then Exit Sub
 For Each c In Selection
'選択したセル全てを処理
  For i = 1 To Len(c) - Len(a) + 1
   If Mid(c, i, Len(a)) = a Then c = Left(c, i - 1) & Right(c, Len(c) - Len(a) - i + 1)
  Next
 Next
End Sub
  このコードの使い方は、マクロの使い方(1)標準モジュールにあります。
56 カタカナをローマ字(アルファベット)に変換するには?
http://www.keep-on.com/~excelyou/2000lng4/200001/00010098.txt 
 「カタカナをローマ字にするにはU?」 【VBAラウンジ】
Function kana2roma(ByVal kana As String) As String
 Dim i As Integer, retStr As String
 Dim ts As Boolean, tmp1 As String, tmp2 As String
 Dim Cnv2(1 To 64, 1 To 2) As String, Cnv1(1 To 85, 1 To 2) As String
 Cnv2(1, 1) = "きぃ": Cnv2(1, 2) = "kyi"
 Cnv2(2, 1) = "きぇ": Cnv2(2, 2) = "kye"
 Cnv2(3, 1) = "きゃ": Cnv2(3, 2) = "kya"
 Cnv2(4, 1) = "きゅ": Cnv2(4, 2) = "kyu"
 Cnv2(5, 1) = "きょ": Cnv2(5, 2) = "kyo"
 Cnv2(6, 1) = "ぎぃ": Cnv2(6, 2) = "gyi"
 Cnv2(7, 1) = "ぎぇ": Cnv2(7, 2) = "gye"
 Cnv2(8, 1) = "ぎゃ": Cnv2(8, 2) = "gya"
 Cnv2(9, 1) = "ぎゅ": Cnv2(9, 2) = "gyu"
 Cnv2(10, 1) = "ぎょ": Cnv2(10, 2) = "gyo"
 Cnv2(11, 1) = "しぃ": Cnv2(11, 2) = "syi"
 Cnv2(12, 1) = "しぇ": Cnv2(12, 2) = "she"
 Cnv2(13, 1) = "しゃ": Cnv2(13, 2) = "sha"
 Cnv2(14, 1) = "しゅ": Cnv2(14, 2) = "shu"
 Cnv2(15, 1) = "しょ": Cnv2(15, 2) = "sho"
 Cnv2(16, 1) = "じぃ": Cnv2(16, 2) = "zyi"
 Cnv2(17, 1) = "じぇ": Cnv2(17, 2) = "je"
 Cnv2(18, 1) = "じゃ": Cnv2(18, 2) = "ja"
 Cnv2(19, 1) = "じゅ": Cnv2(19, 2) = "ju"
 Cnv2(20, 1) = "じょ": Cnv2(20, 2) = "jo"
 Cnv2(21, 1) = "ちぃ": Cnv2(21, 2) = "tyi"
 Cnv2(22, 1) = "ちぇ": Cnv2(22, 2) = "che"
 Cnv2(23, 1) = "ちゃ": Cnv2(23, 2) = "cha"
 Cnv2(24, 1) = "ちゅ": Cnv2(24, 2) = "chu"
 Cnv2(25, 1) = "ちょ": Cnv2(25, 2) = "cho"
 Cnv2(26, 1) = "ぢぃ": Cnv2(26, 2) = "dyi"
 Cnv2(27, 1) = "ぢぇ": Cnv2(27, 2) = "dye"
 Cnv2(28, 1) = "ぢゃ": Cnv2(28, 2) = "dya"
 Cnv2(29, 1) = "ぢゅ": Cnv2(29, 2) = "dyu"
 Cnv2(30, 1) = "ぢょ": Cnv2(30, 2) = "dyo"
 Cnv2(31, 1) = "にぃ": Cnv2(31, 2) = "nyi"
 Cnv2(32, 1) = "にぇ": Cnv2(32, 2) = "nye"
 Cnv2(33, 1) = "にゃ": Cnv2(33, 2) = "nya"
 Cnv2(34, 1) = "にゅ": Cnv2(34, 2) = "nyu"
 Cnv2(35, 1) = "にょ": Cnv2(35, 2) = "nyo"
 Cnv2(36, 1) = "ひぃ": Cnv2(36, 2) = "hyi"
 Cnv2(37, 1) = "ひぇ": Cnv2(37, 2) = "hye"
 Cnv2(38, 1) = "ひゃ": Cnv2(38, 2) = "hya"
 Cnv2(39, 1) = "ひゅ": Cnv2(39, 2) = "hyu"
 Cnv2(40, 1) = "ひょ": Cnv2(40, 2) = "hyo"
 Cnv2(41, 1) = "びぃ": Cnv2(41, 2) = "byi"
 Cnv2(42, 1) = "びぇ": Cnv2(42, 2) = "bye"
 Cnv2(43, 1) = "びゃ": Cnv2(43, 2) = "bya"
 Cnv2(44, 1) = "びゅ": Cnv2(44, 2) = "byu"
 Cnv2(45, 1) = "びょ": Cnv2(45, 2) = "byo"
 Cnv2(46, 1) = "ぴぃ": Cnv2(46, 2) = "pyi"
 Cnv2(47, 1) = "ぴぇ": Cnv2(47, 2) = "pye"
 Cnv2(48, 1) = "ぴゃ": Cnv2(48, 2) = "pya"
 Cnv2(49, 1) = "ぴゅ": Cnv2(49, 2) = "pyu"
 Cnv2(50, 1) = "ぴょ": Cnv2(50, 2) = "pyo"
 Cnv2(51, 1) = "ふぁ": Cnv2(51, 2) = "fa"
 Cnv2(52, 1) = "ふぃ": Cnv2(52, 2) = "fi"
 Cnv2(53, 1) = "ふぇ": Cnv2(53, 2) = "fe"
 Cnv2(54, 1) = "ふぉ": Cnv2(54, 2) = "fo"
 Cnv2(55, 1) = "みぃ": Cnv2(55, 2) = "myi"
 Cnv2(56, 1) = "みぇ": Cnv2(56, 2) = "mye"
 Cnv2(57, 1) = "みゃ": Cnv2(57, 2) = "mya"
 Cnv2(58, 1) = "みゅ": Cnv2(58, 2) = "myu"
 Cnv2(59, 1) = "みょ": Cnv2(59, 2) = "myo"
 Cnv2(60, 1) = "りぃ": Cnv2(60, 2) = "ryi"
 Cnv2(61, 1) = "りぇ": Cnv2(61, 2) = "rye"
 Cnv2(62, 1) = "りゃ": Cnv2(62, 2) = "rya"
 Cnv2(63, 1) = "りゅ": Cnv2(63, 2) = "ryu"
 Cnv2(64, 1) = "りょ": Cnv2(64, 2) = "ryo"
 Cnv1(1, 1) = "ー": Cnv1(1, 2) = "-"
 Cnv1(2, 1) = "ぁ": Cnv1(2, 2) = "xa"
 Cnv1(3, 1) = "あ": Cnv1(3, 2) = "a"
 Cnv1(4, 1) = "ぃ": Cnv1(4, 2) = "xi"
 Cnv1(5, 1) = "い": Cnv1(5, 2) = "i"
 Cnv1(6, 1) = "ぅ": Cnv1(6, 2) = "xu"
 Cnv1(7, 1) = "う": Cnv1(7, 2) = "u"
 Cnv1(8, 1) = "ぇ": Cnv1(8, 2) = "xe"
 Cnv1(9, 1) = "え": Cnv1(9, 2) = "e"
 Cnv1(10, 1) = "ぉ": Cnv1(10, 2) = "xo"
 Cnv1(11, 1) = "お": Cnv1(11, 2) = "o"""
 Cnv1(12, 1) = "か": Cnv1(12, 2) = "ka"
 Cnv1(13, 1) = "が": Cnv1(13, 2) = "ga"
 Cnv1(14, 1) = "き": Cnv1(14, 2) = "ki"
 Cnv1(15, 1) = "ぎ": Cnv1(15, 2) = "gi"
 Cnv1(16, 1) = "く": Cnv1(16, 2) = "ku"
 Cnv1(17, 1) = "ぐ": Cnv1(17, 2) = "gu"
 Cnv1(18, 1) = "け": Cnv1(18, 2) = "ke"
 Cnv1(19, 1) = "げ": Cnv1(19, 2) = "ge"
 Cnv1(20, 1) = "こ": Cnv1(20, 2) = "ko"
 Cnv1(21, 1) = "ご": Cnv1(21, 2) = "go"
 Cnv1(22, 1) = "さ": Cnv1(22, 2) = "sa"
 Cnv1(23, 1) = "ざ": Cnv1(23, 2) = "za"
 Cnv1(24, 1) = "し": Cnv1(24, 2) = "shi"
 Cnv1(25, 1) = "じ": Cnv1(25, 2) = "ji"
 Cnv1(26, 1) = "す": Cnv1(26, 2) = "su"
 Cnv1(27, 1) = "ず": Cnv1(27, 2) = "zu"
 Cnv1(28, 1) = "せ": Cnv1(28, 2) = "se"
 Cnv1(29, 1) = "ぜ": Cnv1(29, 2) = "ze"
 Cnv1(30, 1) = "そ": Cnv1(30, 2) = "so"
 Cnv1(31, 1) = "ぞ": Cnv1(31, 2) = "zo"
 Cnv1(32, 1) = "た": Cnv1(32, 2) = "ta"
 Cnv1(33, 1) = "だ": Cnv1(33, 2) = "da"
 Cnv1(34, 1) = "ち": Cnv1(34, 2) = "chi"
 Cnv1(35, 1) = "ぢ": Cnv1(35, 2) = "di"
 Cnv1(36, 1) = "つ": Cnv1(36, 2) = "tsu"
 Cnv1(37, 1) = "づ": Cnv1(37, 2) = "du"
 Cnv1(38, 1) = "て": Cnv1(38, 2) = "te"
 Cnv1(39, 1) = "で": Cnv1(39, 2) = "de"
 Cnv1(40, 1) = "と": Cnv1(40, 2) = "to"
 Cnv1(41, 1) = "ど": Cnv1(41, 2) = "do"
 Cnv1(42, 1) = "な": Cnv1(42, 2) = "na"
 Cnv1(43, 1) = "に": Cnv1(43, 2) = "ni"
 Cnv1(44, 1) = "ぬ": Cnv1(44, 2) = "nu"
 Cnv1(45, 1) = "ね": Cnv1(45, 2) = "ne"
 Cnv1(46, 1) = "の": Cnv1(46, 2) = "no"
 Cnv1(47, 1) = "は": Cnv1(47, 2) = "ha"
 Cnv1(48, 1) = "ば": Cnv1(48, 2) = "ba"
 Cnv1(49, 1) = "ぱ": Cnv1(49, 2) = "pa"
 Cnv1(50, 1) = "ひ": Cnv1(50, 2) = "hi"
 Cnv1(51, 1) = "び": Cnv1(51, 2) = "bi"
 Cnv1(52, 1) = "ぴ": Cnv1(52, 2) = "pi"
 Cnv1(53, 1) = "ふ": Cnv1(53, 2) = "fu"
 Cnv1(54, 1) = "ぶ": Cnv1(54, 2) = "bu"
 Cnv1(55, 1) = "ぷ": Cnv1(55, 2) = "pu"
 Cnv1(56, 1) = "へ": Cnv1(56, 2) = "he"
 Cnv1(57, 1) = "べ": Cnv1(57, 2) = "be"
 Cnv1(58, 1) = "ぺ": Cnv1(58, 2) = "pe"
 Cnv1(59, 1) = "ほ": Cnv1(59, 2) = "ho"
 Cnv1(60, 1) = "ぼ": Cnv1(60, 2) = "bo"
 Cnv1(61, 1) = "ぽ": Cnv1(61, 2) = "po"
 Cnv1(62, 1) = "ま": Cnv1(62, 2) = "ma"
 Cnv1(63, 1) = "み": Cnv1(63, 2) = "mi"
 Cnv1(64, 1) = "む": Cnv1(64, 2) = "mu"
 Cnv1(65, 1) = "め": Cnv1(65, 2) = "me"
 Cnv1(66, 1) = "も": Cnv1(66, 2) = "mo"
 Cnv1(67, 1) = "ゃ": Cnv1(67, 2) = "xya"
 Cnv1(68, 1) = "や": Cnv1(68, 2) = "ya"
 Cnv1(69, 1) = "ゅ": Cnv1(69, 2) = "xyu"
 Cnv1(70, 1) = "ゆ": Cnv1(70, 2) = "yu"
 Cnv1(71, 1) = "ょ": Cnv1(71, 2) = "xyo"
 Cnv1(72, 1) = "よ": Cnv1(72, 2) = "yo"
 Cnv1(73, 1) = "ら": Cnv1(73, 2) = "ra"
 Cnv1(74, 1) = "り": Cnv1(74, 2) = "ri"
 Cnv1(75, 1) = "る": Cnv1(75, 2) = "ru"
 Cnv1(76, 1) = "れ": Cnv1(76, 2) = "re"
 Cnv1(77, 1) = "ろ": Cnv1(77, 2) = "ro"
 Cnv1(78, 1) = "わ": Cnv1(78, 2) = "wa"
 Cnv1(79, 1) = "ゐ": Cnv1(79, 2) = "wi"
 Cnv1(80, 1) = "ゑ": Cnv1(80, 2) = "we"
 Cnv1(81, 1) = "を": Cnv1(81, 2) = "wo"
 Cnv1(82, 1) = "ん": Cnv1(82, 2) = "nn"
 Cnv1(83, 1) = "ゑ": Cnv1(83, 2) = "we"
 Cnv1(84, 1) = "を": Cnv1(84, 2) = "wo"
 Cnv1(85, 1) = "ん": Cnv1(85, 2) = "nn"
 kana = StrConv(kana, vbHiragana Or vbWide)
 retStr = "": i = 1: ts = False
 Do While i <= Len(kana)
  tmp2 = "": tmp1 = ""
  On Error Resume Next
  tmp2 = Application.WorksheetFunction.VLookup(Mid(kana, i, 2), Cnv2(), 2, False)
  tmp1 = Application.WorksheetFunction.VLookup(Mid(kana, i, 1), Cnv1(), 2, False)
  On Error GoTo 0
  If tmp2 <> "" Then
   If ts Then
    retStr = retStr & Left(tmp2, 1)
   End If
   retStr = retStr & tmp2
   i = i + 2
   ts = False
  ElseIf tmp1 <> "" Then
   If ts Then
    retStr = retStr & Left(tmp1, 1)
   End If
   retStr = retStr & tmp1
   i = i + 1
   ts = False
  ElseIf Mid(kana, i, 1) = "っ" Then
   ts = True
   i = i + 1
  Else
   retStr = retStr & Mid(kana, i, 1)
   i = i + 1
  End If
 Loop
 kana2roma = retStr
End Function
  このコードの使い方は、マクロの使い方(6) ユーザー定義関数(標準モジュール)にあります。
57 ローマ字(アルファベット)をカタカナに変換するには?
http://cgi.fuji.ne.jp/~fj2094/cgi-bin2/wwwlng.cgi?print+200105/01050169.txt 
 「カタカナをアルファベットにできますか?」 【VBAラウンジ】
Function roma2kana(ByVal roma As String, Optional ByVal katakana As Boolean = True) As String
 Dim i As Integer, j1 As Integer, j2 As Integer, k As Integer, index As Integer
 Dim conv2 As Variant, conv1 As Variant, conv0 As Variant
 Dim kanatbl(1 To 41), Pre As String
 Dim retStr As String
 conv2 = Array("by", "ch", "dy", "gy", "hy", "jy", "ky", "ly", "my", "nn", "ny", "py", "ry", "sh", "sy", "ts", "ty", "xy", "zy", "lt", "xt")
 conv1 = Array("b", "d", "f", "g", "h", "j", "k", "l", "m", "n", "p", "r", "s", "t", "v", "w", "x", "y", "z")
 conv0 = Array("a", "i", "u", "e", "o")
 kanatbl(1) = Array("ア", "イ", "ウ", "エ", "オ")
 kanatbl(2) = Array("バ", "ビ", "ブ", "ベ", "ボ")
 kanatbl(3) = Array("ダ", "ヂ", "ヅ", "デ", "ド")
 kanatbl(4) = Array("ファ", "フィ", "フ", "フェ", "フォ")
 kanatbl(5) = Array("ガ", "ギ", "グ", "ゲ", "ゴ")
 kanatbl(6) = Array("ハ", "ヒ", "フ", "ヘ", "ホ")
 kanatbl(7) = Array("ジャ", "ジ", "ジュ", "ジェ", "ジョ")
 kanatbl(8) = Array("カ", "キ", "ク", "ケ", "コ")
 kanatbl(9) = Array("ァ", "ィ", "ゥ", "ェ", "ォ")
 kanatbl(10) = Array("マ", "ミ", "ム", "メ", "モ")
 kanatbl(11) = Array("ナ", "ニ", "ヌ", "ネ", "ノ")
 kanatbl(12) = Array("パ", "ピ", "プ", "ペ", "ポ")
 kanatbl(13) = Array("ラ", "リ", "ル", "レ", "ロ")
 kanatbl(14) = Array("サ", "シ", "ス", "セ", "ソ")
 kanatbl(15) = Array("タ", "チ", "ツ", "テ", "ト")
 kanatbl(16) = Array("ウ゛ァ", "ウ゛ィ", "ウ゛", "ウ゛ェ", "ウ゛ォ")
 kanatbl(17) = Array("ワ", "ヰ", "ウ", "ヱ", "ヲ")
 kanatbl(18) = Array("ァ", "ィ", "ゥ", "ェ", "ォ")
 kanatbl(19) = Array("ヤ", "イ", "ユ", "イェ", "ヨ")
 kanatbl(20) = Array("ザ", "ジ", "ズ", "ゼ", "ゾ")
 kanatbl(21) = Array("ビャ", "ビィ", "ビュ", "ビュ", "ビョ")
 kanatbl(22) = Array("チャ", "チ", "チュ", "チェ", "チョ")
 kanatbl(23) = Array("ヂャ", "ヂィ", "ヂュ", "ヂェ", "ヂョ")
 kanatbl(24) = Array("ギャ", "ギィ", "ギュ", "ギェ", "ギョ")
 kanatbl(25) = Array("ヒャ", "ヒィ", "ヒュ", "ヒュ", "ヒョ")
 kanatbl(26) = Array("ジャ", "ジ", "ジュ", "ジェ", "ジョ")
 kanatbl(27) = Array("キャ", "キィ", "キュ", "キェ", "キョ")
 kanatbl(28) = Array("ャ", "ィ", "ュ", "ェ", "ョ")
 kanatbl(29) = Array("ミャ", "ミィ", "ミュ", "ミェ", "ミョ")
 kanatbl(30) = Array("ンア", "ンイ", "ンウ", "ンエ", "ンオ")
 kanatbl(31) = Array("ニャ", "ニィ", "ニュ", "ニェ", "ニョ")
 kanatbl(32) = Array("ピャ", "ピィ", "ピュ", "ピェ", "ピョ")
 kanatbl(33) = Array("リャ", "リィ", "リュ", "リェ", "リョ")
 kanatbl(34) = Array("シャ", "シ", "シュ", "シェ", "ショ")
 kanatbl(35) = Array("シャ", "シィ", "シュ", "シェ", "ショ")
 kanatbl(36) = Array("ツァ", "ツィ", "ツ", "ツェ", "ツォ")
 kanatbl(37) = Array("チャ", "チィ", "チュ", "チェ", "チョ")
 kanatbl(38) = Array("ャ", "ィ", "ュ", "ェ", "ョ")
 kanatbl(39) = Array("ジャ", "ジィ", "ジュ", "ジェ", "ジョ")
 kanatbl(40) = Array("lta", "lti", "ッ", "lte", "lto")
 kanatbl(41) = Array("xta", "xti", "ッ", "xte", "xto")
 roma = StrConv(roma, vbNarrow Or vbLowerCase)
 retStr = "": Pre = "": i = 1: index = 1
 Do While i <= Len(roma)
  k = 0: j1 = 0: j2 = 0
  If Mid(roma, i, 1) Like "[a-z-]" Then
   On Error Resume Next
   k = Application.WorksheetFunction.Match(Mid(roma, i, 1), conv0, 0)
   On Error GoTo 0
   If k > 0 Then
    retStr = retStr & IIf(index = 1, Pre, "") & kanatbl(index)(k - 1)
    Pre = "": i = i + 1: index = 1
   ElseIf k = 0 Then
    On Error Resume Next
    j2 = Application.WorksheetFunction.Match(Mid(roma, i, 2), conv2, 0)
    j1 = Application.WorksheetFunction.Match(Mid(roma, i, 1), conv1, 0)
    On Error GoTo 0
    If j2 > 0 Then j1 = 0
    index = 1 - (j2 > 0) * 19 + j2 + j1
    Select Case Pre
     Case Mid(roma, i, 1)
      retStr = retStr & "ッ"
     Case "n", "nn"
      retStr = retStr & "ン"
     Case "-"
      retStr = retStr & "ー"
     Case Else
      retStr = retStr & Pre
    End Select
    Pre = Mid(roma, i, IIf(j2, 2, 1))
    i = i + 1 + IIf(j2, 1, 0)
   End If
  Else
   retStr = retStr + IIf(Pre = "nn" Or Pre = "n", "ん", Pre) & Mid(roma, i, 1)
   Pre = ""
   index = 1
   i = i + 1
  End If
 Loop
 roma2kana = retStr & IIf(Pre = "nn" Or Pre = "n", "ん", Pre)
 If Not katakana Then roma2kana = StrConv(roma2kana, vbHiragana)
End Function

  このコードの使い方は、マクロの使い方(6) ユーザー定義関数(標準モジュール)にあります。
58 セルに入力した計算式と、その結果をステータスバーに表示するには?
任意のセルに 5*(7+6) などという数式(=は入れない)を入力しておくと、
そのセルを選択したときにステータスバーに
数式 = 答え(上記例では 5*(7+6)=65 )が表示されます。

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 Dim strWork As String
 On Error Resume Next
 strWork = ActiveCell.Value
 With Application
  .StatusBar = False
  If Len(strWork) > 0 Then
   .StatusBar = strWork & "=" & .Evaluate(strWork)
  End If
 End With
End Sub

  このコードの使い方は、
マクロの使い方(2)シートのモジュールにあります。

59 住所を、都道府県・区市町村・それ以降に分割するには?
http://www.keep-on.com/~excelyou/2000lng2/200008/00080056.txt
 「住所から区市町村だけを取り出すには? 」 【関数ラウンジ】
【B1】に住所があるとして、【C1】〜【F1】に以下の式を入力すると、それぞれ分割した住所を表示します。

【C1】に都道府県  =LEFT(B1,4-SUM((MID(B1,3,1)={"都","道","府","県"})*1))
【D1】に区市町村  =IF(C1="東京都",IF(COUNT(FIND({"東村山","武蔵村","羽村市"},LEFT(F1,3))),LEFT(F1,FIND("市",F1)),LEFT(F1,MIN(FIND({"市","区","町","村"},F1&"市区町村",2)))),IF(COUNT(FIND({"今市市","四日市","八日市","廿日市"},LEFT(F1,3))),LEFT(F1,FIND("市",F1,FIND("市",F1)+1)),IF(IF(COUNT(FIND({"蒲郡市","大和郡","小郡市"},LEFT(F1,3))),"市",IF(COUNT(FIND({"余市郡","高市郡"},LEFT(F1,3))),"郡",MID(F1,MIN(FIND({"市","郡"},F1&"市郡",2)),1)))="市",IF(COUNT(FIND({"札幌市","仙台市","千葉市","横浜市","川崎市","名古屋","京都市","大阪市","神戸市","広島市","北九州","福岡市"},LEFT(F1,3))),LEFT(F1,FIND("区",F1)),LEFT(F1,FIND("市",F1,2))),IF(COUNT(FIND({"佐波郡玉村","恵那郡岩村","東宇和郡野","杵島郡大町","北松浦郡鹿"},LEFT(F1,5))),LEFT(F1,FIND("郡",F1)+3),LEFT(F1,MIN(FIND({"町","村"},F1&"町村",FIND("郡",F1)+2)))))))
【F1】は作業列   =RIGHT(B1,LEN(B1)-LEN(C1))
【E1】にそれ以降  =RIGHT(F1,LEN(F1)-LEN(D1))

注意: F1は、E1の作業列です。F1の式を入れてからでないと、E1は表示できません。
     D1の式は長いですが、改行しないで書き込んでください。

60 干支を表示するには?
http://cgi.fuji.ne.jp/~fj2094/cgi-bin2/wwwlng.cgi?print+200203/02030066.txt 
 「干支の表示」 【関数ラウンジ】
A1に生年月日(シリアル値)が入っているとして、
=MID("申酉戌猪子丑寅兎辰巳午未",MOD(YEAR(A1),12)+1,1)


HOME  
検索  索引  もくじ  関数目次  前ページへ  次ページへ

このページのTOPへ

inserted by FC2 system