[[20211231144910]] 『セルを2つ必要な数値の入力と配置』(するめ) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『セルを2つ必要な数値の入力と配置』(するめ)

説明しづらいのですが,2行にわたって数値と記号のセットを記載する場合の配置方法を教えていただきたいです。
まず入力したい表を図にすると,

  
| 12.3|AA   |
|  4.5|BB   |
|  6.7|CCC   |

※縦線は罫線

以上のような形で,数値を右揃え,記号を左揃えとしたセットがあります。
ただこの配置ではなく,数値右揃えにしたままを2行の真ん中に置きたいと思っています。
つまり完成形のイメージとしては(雑ですが)こんな感じです。

|  12.3|AA  |
|   4.5|BB  |
|   6.7|CCC |

いつも図形などを使って微調整をしているのですが,
そんなアナログな方法に限界を感じています。
なにか機能を使ったいい方法があれば教えていただきたいです。

< 使用 Excel:Office365、使用 OS:Windows10 >


「入力したい表」と「完成形のイメージ」の違いがわかりません。
「2行」とは?
(わからん) 2021/12/31(金) 15:29

>いつも図形などを使って微調整をしているのですが,

セル結合ではだめなのでしょうか

(マナ) 2021/12/31(金) 15:42


 >いつも図形などを使って微調整をしているのですが, 
 これも分からん。
(nm) 2021/12/31(金) 15:45

わからんさん
2列でした。間違いです。
イメージはアップした時に少しずれてしまったので,見づくてすみません。
要は,数値を真ん中に揃えたいので,記号の列は数値の列より幅を少し狭くなっています。

(するめ) 2021/12/31(金) 15:58


マナさん

セル結合だと記号も含めた中央ぞろえになるので,
数値と記号の位置ががたがたになってしまいます。
数値を右揃え,記号は左揃えを保ったまま,
数値を2列の真ん中に置きたいと思っています。
(するめ) 2021/12/31(金) 16:00


nmさん

ややこしいうえに,必要な情報ではないので説明はしていませんでした。
数値の一番左端からセルの左端の幅を測定するために図形を使っています。

 ↓ここのスペースの幅を図形で測定
|  12.3|

最初に,数値セルの左端と図形(四角)を合わせて,目算で数値の一番大きい数字の左端に合わせます。
(↑のイメージでいう1の左端。)
測定したらその図形を,目分量で一番下の桁の数字の右端に合わせます。
(↑のイメージでいう3の右端。)
最後に,記号のセル幅をAltで図形の左端に合わせていました。
(するめ) 2021/12/31(金) 16:09


 >数値を2列の真ん中に置きたいと思っています。
 よう分からん。
(nm) 2021/12/31(金) 16:18

数字の中で、最大の桁数のもの(例の場合は、12.4、小数点含めて4文字)を中央に置き、
その他の数値(例なら、4.5など)はやや右にずれるということでいいのですか?

Excelの通常の機能では達成不可だと思うので、文字数とフォント幅あたりを取得して、VBAで調整するとこになると思います。
(DS) 2021/12/31(金) 16:20


 VBAをされたことはありますか?

 下記のキーワードで検索すると、されたい事が解決できるかもです。
 HorizontalAlignment VBA

(あみな) 2021/12/31(金) 16:23


nmさん

セル結合をせずに数値を2つのセルの真ん中に揃えたいと思っています。
ただ,桁が違う数値を中央ぞろえした場合,数値の両端がそろわないので,
右揃えしたうえで真ん中に置きたいと思っています。
つまり,中央の揃え方は一番桁数の多い数値を基準としたうえで,
他の数値は右揃えをするということです。

記号の位置は,セルの幅に関与しません。
ただ,記号は左揃えにする必要があります。

(するめ) 2021/12/31(金) 16:27


DSさん

そういうことです!!
中央の揃え方は一番桁数の多い数値を基準としたうえで,
他の数値は一番桁数の多い数値に右揃えをしたいと思っています。
VBAを扱えるほど玄人ではないので,
諦めるしかないですかね。
(するめ) 2021/12/31(金) 16:29


あみなさん

アドバイスありがとうございます。
残念ながらVBAを使えるほどExcelを使いこなせていないので,
私には難しいかもしれません。
教えていただいたのに申し訳ないです。
(するめ) 2021/12/31(金) 16:31


 >要は,数値を真ん中に揃えたいので,記号の列は数値の列より幅を少し狭くなっています。

 >数値を右揃え,記号は左揃えを保ったまま,
 >数値を2列の真ん中に置きたいと思っています。

 ↓こんなイメージですか?

    |[A]   |[B]
 [1]|  12.3 |AA 
 [2]|   4.5 |BB 
 [3]|   6.7 |CCC

 もし、上記で良いとして?出来るとしたら
 何行位をされるのですか?
(あみな) 2021/12/31(金) 16:46

 大前提として、用いられている文字がすべて半角英数であるならば、

 1.等幅フォントを使う
 2.数値の列の書式設定を文字列にする
 3.数値の列の桁数を調べて不足している桁数分、半角スペースを数値の前に挿入
 4.記号列の文字数を調べて、最大文字数に不足している記号には記号の後ろに半角スペースを挿入
 4.作業列というか表示用列に、=A1&B1
 5.上記表示用列2列選択して、セルの書式設定で横位置を選択範囲内で中央

 で、なんとかそれらしいことが出来そうですが・・・
(寒) 2021/12/31(金) 16:53

 あー、数値をセルの真ん中か・・・
 ちょっと勘違いでした。
 撤回します。
(寒) 2021/12/31(金) 16:56

VBAなしは、大変そうですね……。

入力セルと表示セルを分割できるなら、寒さんの言うように関数で調整することもできそうですが……。

使用しているフォントは等幅ですか?
また、図形を使ったやり方だと、基本的に記号の幅を調整することになりそうですが、
幅が狭くなりすぎて、表示不可になることはないですか?
(十分に数値列の幅が広いですか?)
(DS) 2021/12/31(金) 17:17


 私が思う…案をいちようあげときます。

 ★三つの方法

 ・1つ目
 セルの書式設定から、数値を選択して
 小数点以下の桁数を1にした後で、-1234.0 を選択する

 結果:真ん中ではないが、数値の右側には半角スペースは出来る
 数値と記号が...くっつきすぎて見にくいだけなら、これでどうでしょうか?

 ・2つ目
 アポストロフィ「’」で、数値を文字列にして
  ' 12.3 と「’」の後ろに半角スペースをつくり、センターリングさせる
 4.5の場合は「’」の後ろに半角スペースを2つ入れる

 ただ、数値は文字列になるので…別のセルと参照(計算値)として利用する場合は
 A1=SUM(A1)は、0になるので、A1=VALUE(A1)と計算式に入れないといけなくなる

 ・3つ目
 VBAの初期設定する方法を、1〜2時間勉強して
 マクロをここの誰かにつくってもらう

 あんまり、私もゴチャゴチャしたことありませんが
 このへん使えばある程度できるような〜

 HorizontalAlignment
 IndentLevel 
 NumberFormat

(あみな) 2021/12/31(金) 17:52


 セルのフォントをMSゴシックなどの等幅フォントに設定して、C1セルに
 =REPT(" ",MAX(LEN(A$1:A$3))-LEN(A1))&A1&" "&B1&REPT(" ",MAX(LEN(B$1:B$3))-LEN(B1))
 と入力して、Ctrl+Shift+Enterで確定してフィルダウン。
 C列の幅を任意の幅に調整して、インデントで位置を調整。

 これを試してみて、足りない点・不満な点を挙げて頂くと、解決に近づくかもしれません。
(寒) 2021/12/31(金) 18:33

 あみなさんの図を見てようやく理解しました。

 ・ホームタブの配置で「インデントを増やす」をクリックする。
 ・セル幅を広げて前の空白を調節する。
 ※インデントすると右側の空白が広くなる。
 でどうでしょうか。

 >中央の揃え方は一番桁数の多い数値を基準としたうえで, 
 >他の数値は一番桁数の多い数値に右揃えをしたいと思っています。
 上記の方法で可能です。 
 文字(左揃え)も同様にすることができます。

(nm) 2021/12/31(金) 18:45


 あー・・・
 これ、nmさんの方法で解決ですよね
 なんでだろう・・・お目汚し失礼いたしました。。。
 みなさま、よいお年を
(寒) 2021/12/31(金) 18:57

 うんうん...nmさんの方法で解決っぽいぽい^^
(あみな) 2021/12/31(金) 19:06


ユーザー定義でもできることが分かりました。
( PP) 2022/01/01(土) 19:38

みなさま

返事が遅くなり申し訳ありません。
まだ読んで無いうえでのコメントなので,
この後じっくり読んで参考にさせていただきたいと思います。

本当にありがとうございました。
(するめ) 2022/01/03(月) 19:42


 (nm) 2021/12/31(金) 18:45 はスルーしてください。

 インデントは文字列に対して有効だというのを忘れていました。
 文字列の行頭にスペースを入れるという感じですね。

 ですから

    |[A]   |[B]
 [1]| 12.3 |AA 
 [2]| 4.5  |BB 
 [3]| 6.7  |CCC

 のように左揃えになります。

 ユーザー定義を使用することになります。

 小数点の桁数は一桁だけですか。
 小数点無しも有るのですか。

 1)小数点を無視して右揃え
    12.5  
     4.5  
  100.15 

 2)小数点の桁を指定して右揃え
   12.50   
   15.00   
  100.15

 3)小数点無しも右揃え
   12.5  
    4.5  
    100

( nm) 2022/01/03(月) 20:13


 ↑の揃え方を無視して真ん中揃え
 ユーザー定義で  " "G/標準"  "  にする。
 左は半角スぺース1個です。
 右は半角スぺース2個です。
 この条件でセルの中央に来ます。
 #が表示されたり、中央にこなかったりしたら列の境界線をダブルクリックする。
(nm) 2022/01/05(水) 21:33

nmさん

関連の作業に取り掛かっておらず,放置していました。
ちゃんと読めていないですが,コメントいたします。

小数点に関しては 2)の小数点を2桁で指定するつもりです。

それと,31日のあみなさんのお返事を見たのですが,
数値セルの中では右揃えで,数値とセルの罫線の間には空白はなくしたいです。

伝わるかわかりませんが,

    |[A]   |[B]
 [1]| 項目名(結合)
 [2]|  12.3|AA 
 [3]|   4.5|BB 
 [4]|   6.7|CCC

上図で,数値はA列の右揃え,記号はB列の左揃えにします。
そして,数値は右揃えになったまま,
桁の一番大きい数値基準でA,B列の真ん中に配置したいと考えています。
つまりここでは12.3がA1とB1を結合中央ぞろえしたときと同じ位置に来て,そのほかの数値(4.5と6.7)は12.3に右揃えるということです。

追加情報ですが,数値の上に項目名を配置したく,そのセルは結合します(A1, B1)。
(するめ) 2022/01/06(木) 21:06


ちなみに表の完成形(罫線)としては,
行1,2の上,行4の下しか引かず,縦罫線を引きません。

なので,こんな表↓になる予定です。
(うまく表現できなくてすみません)

 _______________
     項目名
 _______________ 
      12.3AA
       4.5BB 
       6.7CCC
 _______________

"見た目的には"項目名のある列に,
数値が真ん中に配置されていて,
そこに記号がくっついてるように見えるけど,
実際には2列使っているという感じです。

(するめ) 2022/01/06(木) 21:16


 ↑
 私には完全に理解不能です。
 他の回答を待ってください。
(nm) 2022/01/06(木) 22:20

やりたいことはわかるのですが、VBAは困難ということなのでコメントします。
A列の幅を固定して、文字数からB列の幅を逆算し、
B列の幅は数値で指定する形にしてはいかがでしょうか。
図形を使うよりはマシかと思います。
ただこの方法だと、あらかじめ広めにA列を設定しておく必要が出てきますが……。
(DS) 2022/01/06(木) 22:35

なんか数年前に似たような質問を見た気がします。
その時も質問の仕方がグダグダでした。
「説明しづらいのですが」とか言って単に面倒くさがって
文章だけで説明しようとするからでは。

前回は、図解表現で書いてやっと理解できたみたいでした。
(図解表現で説明すれば簡単に理解できた様な)
特殊だったので、読んでただけですけど…。

(グダグダ) 2022/01/07(金) 01:05


すでにマナさんが提案されていますが
「結合セル」、又は「選択範囲内で中央」を使う例です。

  _____ _________ _________ ___ ___________ ___________ ________________________________________________________ _______________
 |_____|____A____|____B____|_C_|_____D_____|_____E_____|____________________________F___________________________|_______G_______|
 |___1_|     12.3 AA         →           12.3AA        =TEXT($A1,REPT("?",3)&"??.0")&LEFT($B1&REPT(" ",3),3)      "   12.3AA "
 |___2_|      4.5 BB         →            4.5BB        =TEXT($A2,REPT("?",3)&"??.0")&LEFT($B2&REPT(" ",3),3)      "    4.5BB "
 |___3_|      6.7 CCC        →            6.7CCC       =TEXT($A3,REPT("?",3)&"??.0")&LEFT($B3&REPT(" ",3),3)      "    6.7CCC"
 |___4_|                            └─結合セル─┘
 |___5_|                             or 選択範囲内で中央

(チオチモリン) 2022/01/07(金) 09:32


DSさん

ありがとうございます。
おっしゃっている方法,
以前にやったことがあります。
その方法か図形でやる方法しか思いつかず,
難しいですね...。
VBA勉強します...。
(するめ) 2022/01/07(金) 12:07


みなさま

軽い気持ちで質問をしたつもりでしたが,
思っていたより多くの人にアドバイスいただき,
驚いたとともに感謝しております。

かなり頑張って説明したつもりですが,
伝わらなかった方もいたようで,
少し心が苦しくなってきたのでこれで終わりとさせてください。

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

(するめ) 2022/01/07(金) 12:11


見てないかも知れませんが、

2列に分かれた値を繋いで1つの値として、2列分のセルの真ん中に表示するのは、
そのままでは出来ません。
しかも値を参照するときは別々の値として使いたいのですよね?

一案として、入力するシートと表示または印刷するシートは別に分けてはいかがですか?
表示&印刷するときは列とか行とかは結合してもいいししなくてもよいかと思います。
値を使いたいときは入力したシートを見ればよいかと思いました。

※普段そのようなことをしたいと思う人は居ないので、
伝わりにくいのは仕方がないと思います。
特に言葉だけで説明するのは難しい。
画像が容易に貼り付けられる掲示板の利用も検討してみてはいかがでしょうか?

(まっつわん) 2022/01/07(金) 16:03


 言葉だけでは、絶対に伝わりません。でも値を明確にすれば								
 回答者全員に最初から一発で伝わるのではないでしょうか?	

 例とします。					

 A列の数値は、最大値99.9〜最小値0.1までを設定します。								
 B列の記号は、最大3文字〜最小2文字とします。								
 数値も、記号も半角でフォントはメイリオを使用し、サイズは「9」に設定しています。								

 下記の、レイアウトはサンプルの為、実際の1行目の数値は関係ありません。								

 サンプル								

    |[A]  |[B]  |[C]								
 [1]|5.25 |4.75 |   	←セル幅						
 [2]||    |     |   	←縦線						
 [3]|12.3 |AA   |   	←入力値							
 [4]| 4.5 |BB   |   								
 [5]| 6.7 |CCC  |   								

 ・1行目は、現状のセルの幅となります。								
   2列のセル幅の合計は、10.0になるように計算しました。								

 ・2行目は、見出しで項目名(結合する)が入る予定ですがサンプルは、2列の真ん中を								
  解りやすく(縦線)で区切ってセンタリングをしています。								
  (縦線)は、キーボードの円マーク(¥)のとこにあるのを、シフト+縦線 
  で表示しセルを結合しています。

  これでセンターの基準ができます。								

 完成希望レイアウト								
 _______________								
     項目名								
 _______________ 								
     12.3AA								
      4.5BB 								
      6.7CCC								
 _______________								

 ※数値と記号の間にスペースが無い条件で、縦線を跨いで								
 数値と記号を...センターに綺麗に表示させたいです。								

 ※他の条件として、数値と記号の入る行を結合しない場合は
 数値は右揃えにし小数第一位をピッタリ縦に並べたいです。								
 記号は全て、B列の左揃えにします。

 できる方法があれば、関数でも、セルの結合でもVBAでも構いません。

 最後に...

 見てないかも知れませんが、回答者は、あなたへの解決案を時間を
 使って考えています。

 私も、伝えるのが下手ですが...上記の内容程度は最初から
 準備して頂きたいです。

 日を改めて、出直せばいいから次は...軽い気持ちで質問を
 するのは考え直して欲しい。								

(あみな) 2022/01/07(金) 19:07


コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.