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) |
|
59 | 住所を、都道府県・区市町村・それ以降に分割するには? http://www.keep-on.com/~excelyou/2000lng2/200008/00080056.txt 「住所から区市町村だけを取り出すには? 」 【関数ラウンジ】 |
【B1】に住所があるとして、【C1】〜【F1】に以下の式を入力すると、それぞれ分割した住所を表示します。 【C1】に都道府県 =LEFT(B1,4-SUM((MID(B1,3,1)={"都","道","府","県"})*1)) 注意: F1は、E1の作業列です。F1の式を入れてからでないと、E1は表示できません。 |
|
60 | 干支を表示するには? http://cgi.fuji.ne.jp/~fj2094/cgi-bin2/wwwlng.cgi?print+200203/02030066.txt 「干支の表示」 【関数ラウンジ】 |
A1に生年月日(シリアル値)が入っているとして、 =MID("申酉戌猪子丑寅兎辰巳午未",MOD(YEAR(A1),12)+1,1) |