機能と数式 | VBA | セミナー | オンラインソフト | お問い合わせ | その他
Top > Excel > 機能と数式

(1)を-1にさせない



通常のセルに「(1)」と入力すると、自動的に「-1」という数値として入力されます。これはExcelの仕様です。欧米の財務諸表などでは、マイナスの数値を括弧で囲むというルールがあるからです。もちろん、すべての表がそのように記載されているわけではありません。そういうルールもある、という意味です。日本だってマイナスの数値を表すとき、先頭に「▲」を付けることがありますよね。特に決算書など財務諸表ではこれが当たり前です。Excelは米国産のアプリケーションですから、そうしたお国柄が仕様に反映されているのはやむを得ないでしょう。

さて、そうは言っても、ときには「(1)」をそのまま入力したいときもありますよね。シート上に箇条書きなどを書く場合です。これには三通りの方法がありますので、お好きな方法で対応してください。

1.先頭に「'」を付ける

一般的に「123」は数値で、「田中」は文字列です。Excelでは、入力されたデータが数値か文字列かを自動的に判定しています。本来なら数値と判定されるデータを、強引に文字列として入力するには、先頭に「'」を付けて入力します。「(1)」などの括弧数値をとりあえず入力したいのなら、この方法が簡単です。

2.「文字列」の書式を設定しておく

あらかじめ「(1)」など括弧数値を入力するセルが決まっているのなら、先にセルの書式設定で「文字列」の表示形式を設定しておくのも手です。対象のセル範囲を選択してCtrl+1を押し、表示される[セルの書式設定]ダイアログボックスの[表示形式]タブを開きます。[分類]リストで「文字列」を選択して[OK]ボタンをクリックします。これで、このセルに入力する「(1)」は「-1」に変換されません。

3.オートコレクトに登録しておく

「(1)」などの括弧数値をひんぱんに入力するのでしたら、オートコレクトに登録しておくと便利です。[ツール]メニューの[オートコレクトのオプション]を実行して[オートコレクト]ダイアログボックスを開きます。
まず[オートコレクト]タブの[入力中に自動修正する]チェックボックスをオンにします。
次に[修正文字列]ボックスに「(1)」、隣の[修正後の文字列]ボックスに「'(1)」と入力して[追加]ボタンをクリックします。
必要なら同じように「'(2)」「'(3)」も登録しておきましょう。



これで、通常の操作で「(1)」を入力できるようになります。ただし、オートコレクトには他の修正文字列もたくさん登録されていますので、それらがすべて適用される点に留意してください。「adn」「seh」は英単語の綴りミスと判断されて「and」「she」に自動変換されます。

「(1)」から「(50)」のようにたくさんの括弧数値をオートコレクトに登録するのは意外と手間がかかります。参考までに、一気に登録/削除するマクロをご紹介しましょう。

次のコードは、「(1)」から「(10)」までの修正文字列をオートコレクトに登録します。

Sub AddData()
    Dim i As Long
    For i = 1 To 10
        Application.AutoCorrect.AddReplacement What:="(" & i & ")", Replacement:="'(" & i & ")"
    Next i
End Sub

次のコードは、すでに登録されている「(1)」から「(10)」までの修正文字列を、オートコレクトから削除します。登録されていない修正文字列を削除しようとするとエラーになりますが、「On Error Resume Next」で無視しています。

Sub DelData()
    Dim i As Long
    On Error Resume Next
    For i = 1 To 10
        Application.AutoCorrect.DeleteReplacement What:="(" & i & ")"
    Next i
End Sub

オマケで、現在登録されている全リストをワークシートに出力するマクロです。

Sub PrintList()
    Dim i As Long, Rep
    Cells(1, 1) = "修正文字列"
    Cells(1, 2) = "修正後の文字列"
    Rep = Application.AutoCorrect.ReplacementList
    For i = 1 To UBound(Rep)
        Cells(i + 1, 1) = Rep(i, 1)
        Cells(i + 1, 2) = Rep(i, 2)
    Next i
End Sub





このエントリーをはてなブックマークに追加