重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

金額の表示なのですが、3桁ごとの桁区切りをカンマではなく、「|」(半角の縦棒線)を使用したいのです。
色々考えてみたのですが、どうしても出来ません。
方法をご存知の方がいらっしゃいましたら、お教えいただけないでしょうか、何卒よろしくお願いいたします。

A 回答 (11件中1~10件)

こんにちは。

maruru01です。

まず、そのセル自体の表示を設定する方法です。
対象のセルの表示形式をユーザー定義で、
「[<1000]##0;[<1000000]#|###;#|###|###」
とします。
これだと、そのセルに入る値の桁数が、0~9桁までなら対応出来ます。
(つまり、10桁以上には対応しません。またマイナスの値にも対応しません。)

次に、別のセルに文字列として表示させる方法です。
(No.2の方と同じ考え方です。)
A1に金額を入力する場合に、表示するセルに、

=SUBSTITUTE(TEXT(A1,"#,##0"),",","|")

と入力します。
これなら、何桁でも(マイナスでも)きちんと表示されます。
    • good
    • 0
この回答へのお礼

maruru01さん、
早速のアドバイスをありがとうございました。
試してみましたところ、2つの方法とも意図した通りの結果が得られました!
まさしくこの様にしたかったので、嬉しいです。
今回は、桁が10を越すケースもありえるため、式の方を使わせていただくことになりそうです。
9桁以内だったら表示形式が利用できて理想通りだったのに…残念です。
けれど、表示形式でも出来ると分かり、勉強になりました。

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

お礼日時:2005/05/07 21:21

KenKen_SPさまへ



これは、オフ・トピックになってしまうかもしれませんが、

>EXCEL2000 から新しく追加されたプロパティとなっていました(参考URL)
> http://www.microsoft.com/japan/msdn/library/defa …
[Microsoft Excel 2000 開発者向け新機能]

Applicationクラスのメンバの中にありますか?

それは、QueryTable クラスのメンバのTextFileThousandsSeparator プロパティのことではないでしょうか?

ヘルプより
テキスト ファイルをクエリ テーブルにインポートするときに、Excel で使用する桁区切り記号を設定します。

使用例:
Worksheets("Sheet1").QueryTables(1) _
.TextFileThousandsSeparator = "."

こちらは、VBA辞典(2002)にも出てきます。
何かの間違いではないでしょうか?

今のところ、私の今のレベルでは、下位バージョンに、Shell.Application から、コントロールパネルの地域を開き、マニュアルで変更するぐらいしか、思いつきませんでしたが、この変更する方法は、下位バージョンでも必ずあると思います。

ただ、私は、この元のご質問に関して、とても、1000単位のセパレータとして「|」では、数字と見まちがうだけでなく、出力として出てきてしまうので、失礼ですが、実用にはならないような気がしています。私が、ここで提出した#5のVBAのコードのアイデアは、実際に使っているものと同じタイプのものです。本当に実用的にさせるためには、もう少し、別な部分に手を加える必要がありますが。
    • good
    • 0
この回答へのお礼

Wendy02さま、
こちらのお礼欄をお借りして、最後に皆様にお礼をさせていただきたく、どうぞ、お許しください。

今回アドバイスを下さいました皆様、
私のつたない質問にご丁寧にまた詳細にご説明くださり、大変感謝しております。
同時にとても勉強にそして参考になりました。
分からない事もありますので、勉強しようと思います。

また、Wendy02さまはじめ、
ご指摘を頂戴した通り、縦線では確かに見間違いはまぬかれないと思います。
(出力はして良いのですが)
一度進言してみるつもりです。
折角方法が分かりましたので、使いたい気持ちはかなりありますが、
ミスを誘発しては元も子もありません(汗)

最後に、
本来なら皆様にポイントをお渡ししたいのに、ご回答を選ばなければならず残念ですが、
本当に色々と勉強になる事ばかりで感謝の気持ちで締めくくらせて頂きたく思います。
皆様、本当にありがとうございました。

お礼日時:2005/05/07 21:46

Wendy02さま



EXCEL2002 の VBA ヘルプに ThousandsSeparator プロパティが記載され、動作することを確認しております。MSDN ライブラリによると EXCEL2000 から新しく追加されたプロパティとなっていました(参考URL)。したがって、

「EXCEL2000以前のバージョンでは#7の方法は使えない」

ということになりますね。アドバイスありがとうございました。

参考URL:http://www.microsoft.com/japan/msdn/library/defa …
    • good
    • 0

KenKen_SP様へ



> .ThousandsSeparator = "|"

今、Excel VBA辞典(2002)でプロパティを調べてみて、それがなかったので、MSDN を調べてみたら、それは、Excel2003 のVBAのプロパティのようですね。ちょっと限定されてちゃうようです。たぶん、いつものように、下位バージョンでも同じ方法はあるでしょうけれど……。

参考URL:http://msdn.microsoft.com/library/default.asp?ur …
    • good
    • 0

>...この表が完成した際に利用するのがあまりExcelに詳しい人ではないため、


>多分桁数に応じて「|###」を変えるという事が無理なのです。

では、マクロは使えないかも知れませんね。ただ、、

>縦棒線にしたいのはこのファイルだけで、他のファイルではカンマで対応したい...

この点については、以下のマクロを ThisWorkBook に貼り付けることで実現できますね。マクロの使用も検討してみて下さい。



Private Sub Workbook_Activate()
  With Application
    .ThousandsSeparator = "|"
    .UseSystemSeparators = False
  End With
End Sub

Private Sub Workbook_Deactivate()
  With Application
    .ThousandsSeparator = ","
    .UseSystemSeparators = True
  End With
End Sub
    • good
    • 0
この回答へのお礼

KenKen_SPさん、
再度アドバイスくださいまして、ありがとうございます。
試してみたのですが、
「オブジェクトはこのプロパティまたはメソッドをサポートしていません。」
と出てしまいました。
私の利用しているバージョンでは使用できないということでしょうか…(Excel2000なのですが)
今回は残念ですが、ご丁寧なアドバイス心から感謝しております。

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

お礼日時:2005/05/07 21:23

時々、見かけるご質問なので、ご質問者はご利用になられないかもしれませんが、出しておきます。



これは、何度か作っています。まだ、全てのフォントサイズで実施したわけではないのですが、等幅11pt と12ptでは有効のようです。コードに数字を入れれば、微調整も利きます。12pt以降の定数が分かりません。下は、9ptまでです。

これは、桁線を、オートシェイプの線で引くマクロです。
標準で、枠線とほぼ同じ色になっています。範囲と色の数字を入れれば、ご自由に変えられます。

なお、これは標準モジュールに登録することを想定しています。
'----------------------------------------------------------
Private Const letterWidth12 As Double = 7.92
Private Const letterWidth11 As Double = 7.92
Private Const letterwidth10 As Double = 6.92
Private Const letterwidth9 As Double = 5.92
Sub LocationLines()
'桁線を引くマクロ(ただし、等幅フォントに限る)
Dim a&, b&, c&, xw, y1&, y2&, l As Shape
Dim Rng As Range
'※ユーザ設定
'------------------------
Set Rng = Range("B2:B12") '桁線を引く場所の設定
'------------------------
If Rng.Columns.Count > 1 Then MsgBox "1列で設定してください", 16: Exit Sub
With Rng
y1 = .Cells(1).Top '上
y2 = .Cells(Rng.Count).Offset(1).Top '下
'線があれば、消す
For Each l In ActiveSheet.Shapes
 If l.Type = msoLine Then
  l.Cut
 End If
Next l
'デフォルトのセル幅を実際に測る
a = ActiveSheet.Cells(1, 255).Left
b = ActiveSheet.Cells(1, 255).Offset(, 1).Left
'1文字辺りの幅を計算
c = (b - a) / letterWidth11
'左から縦線を引く
x3 = .Cells(1).Offset(, 1).Left - c * 3 + 1 '+/-調整 (+左,-右)
x2 = .Cells(1).Offset(, 1).Left - Int(c * 6) + 3 '+/-調整
If .Cells(1).ColumnWidth > ActiveSheet.StandardWidth Then
 x1 = .Cells(1).Offset(, 1).Left - Int(c * 8) + 0 '+/-調整
End If
For Each xw In Array(x3, x2, x1)
 If xw > 0 Then
  With ActiveSheet.Shapes.AddLine(xw, y1, xw, y2)
  .Line.ForeColor.SchemeColor = 22
  '黒(8),赤(10),青(12),水色(15),灰(22)
  End With
 End If
Next xw
End With
Set Rng = Nothing
End Sub
'--------------------------------------
    • good
    • 0
この回答へのお礼

Wendy02 さん、
早速のアドバイスをありがとうございました。

試してみましたところ、なるほど、おっしゃる通り11・12pで線が引けました。
マクロの内容自体はちょっと私には難しくて正直よく分からないので、
内容が分かるスキルがあれば色々試してからお礼が出来たのですが、恐縮です。
こんなやり方もあるのですね、勉強してみます。
こちらのマクロですと、色々と使えそうな感じですので、是非覚えておきたいと思います。

ご丁寧な説明とアドバイスをありがとうございました。

お礼日時:2005/05/07 21:18

「ツール」「オプション」「インターナショナル」で「システムの桁区切りを使用する」のチェックを外して、任意の記号を設定すればできると思います。



ただ全部表示が変わってしまうので、部分的に使用したい場合には向きませんですね。
    • good
    • 0
この回答へのお礼

dac203さん、
早速のアドバイスをありがとうございます。
確かにおっしゃる通り、他のファイルではカンマで対応したいのです。
しかしながら、今回教えていただいた点は知らない事でしたので、勉強になりました。
どのようになるのか、明日早速試してみたいと思います。

ありがとうございました。もし、他に何かお気づきの点がございましたらアドバイスいただけると幸いです。

お礼日時:2005/05/05 22:21

ツールメニューのオプションから


インターナショナルタブに
「システムの桁切りを使用する」のチェックをはずし、桁区切りのボックスに「|」を入力する。
    • good
    • 0
この回答へのお礼

tresbienさん、
早速のアドバイスをありがとうございます。
実は、縦棒線にしたいのはこのファイルだけで、他のファイルではカンマで対応したいのです。
しかしながら、今回教えていただいた点は知らない事でしたので、勉強になりました。

ありがとうございました。もし、他に何かお気づきの点がございましたらアドバイスいただけると幸いです。

お礼日時:2005/05/05 21:53

セルー書式で


表示形式をユーザ定義で
『#|##0』にすれば出来ました。
でも、見づらくないですか?
    • good
    • 0
この回答へのお礼

koganetonさん、
早速のアドバイスをありがとうございました。
実はこの方法、試してみているのですが、桁数に応じて数を「|###」を変えないと
カンマ代わりに表記させるという事が出来なかったのです。(私のやり方が間違っているのでしょうか…)
そして、実際にこの表が完成した際に使用するのがあまりExcelに詳しい人ではないので、
(そういう私も達者とはとても申せませんが…)
それをやってもらう事が出来そうにないのです。本当にカンマの代わりみたいにして
縦棒線を表記させられないかなぁ…と思っておりまして…。

たしかに、おっしゃる通り見にくいし、数字の1と見間違えそうなんですよね(汗)
もともと、数字を手書きしていた表があって、その元の表の桁区切りが縦線だったため、
今回Excelで作成するにあたって、それをそのまま再現しようとなったのだと思います。

もし、何かお気づきの点がございましたら、アドバイスいただけると幸いです。ありがとうございました。

お礼日時:2005/05/05 22:14

これでどうでしょう?


A1に入った数値を、テキスト化して表示します。

=RIGHT(TEXT(A1,"###|###|###|###"),LOG(A1)+INT(LOG(A1)/3)+1)

文字として表示されますので、右寄せしておいてください。

この回答への補足

shinkun0114さん、
早速のアドバイスありがとうございます。
今自宅で試す事が出来ないので、明日早速会社でチャレンジして、
ご報告させていただきたいと思います!

補足日時:2005/05/05 21:47
    • good
    • 0
この回答へのお礼

shinkun0114さん
試してみましたら、意図した様に棒線を引くことが出来ました!
まさしくこの様に引きたかったので、引くことが出来ると分かって勉強になりました。

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

お礼日時:2005/05/07 10:58

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