• ベストアンサー

エクセル2010 セルの書式設定

数値の入ったいくつかのセルをメモ帳に貼り付けた時、一の位文字位置が合う様にセルの書式設定を行いたいのですが、上手く出来ません。 A1 1,000 A2  10 A3  -100 A4   0 上記のようにプラス表示、マイナス表示、0の場合もあります。 ユーザー定義で???.???を使用し、1の位を合わせましたが、マイナス表示の場合、「-」が離れた位置に付いてしまいました。 どのように設定すればいいか、教えてください ★この質問画面の10のようにずれないように表示させたいのです

質問者が選んだベストアンサー

  • ベストアンサー
回答No.5

この手の疑問を理解するには・・   エクセルというソフトが数値と判断できる値を   ユーザーが数値として認識しやすいように   セルと呼ばれる表示領域に右詰めで表示している だけであるという事を十分に理解しておかないといけないのですが、 そこらへんは大丈夫ですか? で、エクセルで複数セルをコピーすると、 「タブ区切りテキスト」としてクリップボードに一時保管されます。 コレを「メモ帳」などのテキストエディタに貼り付ける際、 このタブ位置については再現が可能なのですが、 メモ帳には上記の「数値かどうか判断する機能」がついていないので 右詰め・桁揃えなどは再現できないわけです。 そんなわけで、 > 上手く出来ません。 エクセルの一般的な機能だけで頑張ろうとすると、 誰がやってもうまくできません。 VBAを駆使して頑張れないことはないと思いますが、 そこまで頑張って「メモ帳で見せる」理由ってどこかにありますか? 新しいシート(あるいはブック)を作って、 そこに貼り付けても結果は一緒ではないですか? おそらく、再考の余地があると思いますよ。 強引なやり方を一つ挙げると、例えば質問文中のサンプルだと 任意のセル・・まぁ、B1セル辺りに   式:=REPT(" ",9-LEN(TEXT(A1,"#,##0")))&TEXT(A1,"#,##0") こんな具合で指定、下方向にフィルで仕込んでおいて、それらをコピー。 メモ帳に貼り付けるとおそらく桁が揃います。 式の中の「9」という数字は適当です。 桁区切りのコンマ「,」を含んで、冒頭の空白を含んで、 表示したい桁数を指定してやります。 要するにタブ区切りに「固定長テキスト」の考え方も混ぜちゃおう というやり方ですね。 このサンプルの場合はマックスが5桁(1,000)なので、 本当は5以上ならOK。 関数は3種類・・詳細は別途お調べくださいませ。 エクセルでは大いにずれまくって表示されますが、 プロポーショナルフォントがどうのこうの。 メモ帳で揃うのは等幅フォントがうんぬんかんぬん・・というからくり。 コレもまた説明しだすと長くなるので 興味がおありなら別途お調べくださいませ。 ついでに。 > ユーザー定義で???.???を使用 数値の表示形式 - ユーザー定義、のことでしょう。 この場合「?」は「有っても無くても任意の1文字」という意味で扱われます。 で、エクセルの表示形式における「1文字」には符号は含まれないので、 > 「-」が離れた位置に という状態に陥るわけですね。 桁数も正負も一律でない場合は「?」は使わない方が無難ですよ、 というお話でした。 あ、そうそう。 小数を含む数値を扱うなら、   式:=REPT(" ",12-LEN(TEXT(A1,"#,##0.00")))&TEXT(A1,"#,##0.00") にすると小数二桁を強制表示しますよ。

fumi234
質問者

お礼

ありがとうございました。教えていただいた数式を利用し、思っていた通りの物を作ることができました。「REPT」関数を初めて知りました。教えていただいた数式を貼り付け、必要箇所に手を加えて完成させたので、もう少し時間をかけて数式を理解し、今後にも活用させたいと思います。 本当にありがとうございました。

その他の回答 (4)

  • HohoPapa
  • ベストアンサー率65% (455/693)
回答No.4

小数点以下が無い。 12桁で揃える。 VBAを使ってもいい。 ということであれば、 メモ帳にコピーしたいセルたちを選択して 以下のマクロを実行後 メモ帳に貼り付けることで 期待の動きになると思います。 Sub MyTest2()  Dim wkCounter As Integer  Dim wk1 As String  Dim wk2 As String  Dim c As Range  Const FixLen = 12  wk2 = ""  For Each c In Selection   wk1 = Format(c.Value, "#,##0")   wk1 = Space(FixLen - Len(wk1)) & wk1   wk2 = wk2 & wk1 & vbCrLf  Next  With New MSForms.DataObject   .SetText wk2   .PutInClipboard  End With End Sub なお、クリップボードを扱うため、上記VBAでは、 https://www.moug.net/tech/exvba/0150091.html を参考に参照設定が必要です。

fumi234
質問者

お礼

ありがとうございます。無事に解決致しました。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.3

色んなケースのテストをやってないが、 例のデータ A1:B4 A1 1,000 A2 10 A3 -100 A4 0 標準モジュールに、VBAのコード作成 Sub test01() Open "数表示.txt" For Output As #1 For i = 1 To 4 suu = space(12) x = Cells(i, "B") y = Format(x, "#,##0") Mid(suu, 10 - Len(y)) = y Print #1, suu Next i Close #1 End Sub 実行しする。 そしてメモ帳で「数表示.txt」を開くと, 画面に 1,000 10 -100 0

fumi234
質問者

お礼

ありがとうございます。無事に解決致しました。

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.2

>★この質問画面の10のようにずれないように表示させたいのです できません。 Excelの表の中ではセル単位で表示位置を左寄せ、中央揃え、右寄せのようにできますが、メモ帳では桁合わせの機能としてTABしかありません。 Wordの場合は数字の桁揃えをTABを使って右揃えや小数点揃えができます。しかし、メモ帳にはTABで先頭揃え(左揃え)のみなので希望のような桁合わせができません。 メモ帳に貼り付けてから手動でTABと空白で桁位置を合わせてください。 尚、フォントの種類によっては微妙にずれますので注意してください。

fumi234
質問者

お礼

ありがとうございます。別の方に教えていただいた関数で解決することが出来ました。

noname#232800
noname#232800
回答No.1

メモ帳でしょ? 表示を揃えたいんでしょ? 無理だと思うけど。

fumi234
質問者

お礼

無事に解決致しました。

関連するQ&A

専門家に質問してみよう