• ベストアンサー

エクセルでの文字列操作

間に空白がある文字列「AB C」を「AB C 」           「A BC」は「A  BC」           「A B」 は「A  B 」 と言う風に変更したいのですが何か良い方法はないでしょうか? 前が苗字で空白後名前なのですが印字する時のバランスをとりたいのです。皆さんどうかお願いします。

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

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

(1)A1の名前を一旦B列、C列に分解します。 A列を範囲指定して メニューのデータ-区切り位置-カンマやタブ・・-次ぎへ-(区切り文字)スペース-次ぎへ-完了 A列 大阪谷 三郎 原 一郎 が A列   B列 大阪谷 三郎 原 一郎 になります。 (2)C1に=A1&REPT(" ",6-LEN(A1))&B1と入れます。 C2以下式を複写します。 6は適当に、4か5か6(字)のどれかが適当でしょう。 (3)書体をP(MSP明朝など)の入っていない MS明朝などに設定します。 大阪谷   三郎 原     一郎 などになりました。

goropiyo
質問者

お礼

お答えありがとうございます! せっかくですがこの式だと名前の始まりがずれてしまいますね。 しかしながらREPT(" ",6-LEN(A1))の発想はすごいですね。これをヒントにこんなのを作ってみました。 =IF(AND(LEN(A1)=1,LEN(B1)=1),A1&REPT(" ",2)&B1&" ",IF(AND(LEN(A1)=1,LEN(B1)=2),A1&REPT(" ",2)&B1,IF(AND(LEN(A1)=2,LEN(B1=1),A1&" "&B1&" ",A1&" "&B1))) かなり長いのですがこれでなんとかなりそうです! ありがとうございました!

その他の回答 (5)

回答No.6

 印刷のためだけにデータそのものを加工してしまうのは、データベース管理の基本的姿勢からちょっと外れますね。  それで、マクロやVBAでもできるでしょうが、スクリプトを書いている暇があったら、CSVで書き出して秀丸エディタあたりで加工したほうがずっと手っ取り早かったりします。  それで、もっと根本的なことでご提案しますと、 》印字する時のバランスをとりたいのです。  これが最終目的なら、「筆自慢」とか「筆ぐるめ」などの年賀状ソフトにデータをコンバートして、そちらで印字すればいいでしょう。これらのソフトは、個々のデータごとの印字バランスの調整について、他に比類のないほど優れています。

goropiyo
質問者

お礼

う~ん、そうなんですよね~。 でも送られてくるデータがなぜか「佐藤 一郎    」とか末尾にスペースが入ってくるんですよ。 TRIM関数を使ってから筆ぐるめって言うパターンは有りなんでしょうね。 でも業務用のドローソフトを細工して使っているのでこのためだけに筆まめ購入の稟議書だすのもちょっと気まずいです(汗

  • comv
  • ベストアンサー率52% (322/612)
回答No.5

こんばんは >文字数は5文字にしたいのです。 とのことなので苗字3文字+名前3文字のデータは ないとして A1に元データ B1に式 =LEFT(SUBSTITUTE(A1," ",IF(LEN(A1)>5,"",IF(SUM(COUNTIF(A1,{"? ?","? ??"})),"  "," ")))&" ",5) で試してみて下さい

goropiyo
質問者

お礼

SUBSTITUTEという関数は初めて見ました、エクセルは奥が深いですね。 回答ありがとうございました。

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.4

なるほど。そう言うことですか。 VBAでのプログラムが必要ですね。 条件が明示されれば、あるいは明快な回答も…。 全角5文字でよいのですか?人名だったら足らないような気がしますが。

goropiyo
質問者

お礼

2・3文字の方:空白でバランスをとって5文字にする 4文字以上の方:苗字+空白1+名前 としています、全角です。 う~んやっぱりVBAでしょうか(><)

  • akey
  • ベストアンサー率38% (8/21)
回答No.2

例えば、A列に「苗字 名前」と入力されていたとして、一旦、 B列に「苗字」 C列に「名前」 というふうに分解するのはいかがでしょうか? そうすれば、B列とC列の文字を左揃えにすれば、 バランスよく配置されます。 ただし、分解処理にはマクロ(VBA)が必要です。 もし、それでよろしければ、サンプルマクロをご提示 できますが?

goropiyo
質問者

お礼

回答ありがとうございます。 分解するという発想がすばらしいですね。 方法は上のimogasiさんのを用いてみました。

  • PAPA0427
  • ベストアンサー率22% (559/2488)
回答No.1

また、新しい課題ですね。 書式設定で、均等割付をされたらいかがでしょう。 書式変更したいセルにあわせて→右クリック→セルの書式設定→配置→横位置のプルダウンで「均等割り付け」 でいかがでしょう?

goropiyo
質問者

お礼

回答ありがとうございます。 しかし残念ながら文字数は5文字にしたいのです。 このデータは作成後csv形式に変換し様々なソフトで応用して使います、よってエクセルの機能に依存しない変換が必要なのです。(関数の場合は形式を選択して貼り付けで値のみを抽出しています) わがまま言ってすみません。

関連するQ&A

  • A列の文字列からB列の文字列を

    A列の文字列からB列の文字列を 引く(マイナス)することはできないでしょうか? 例) A列 - B列 - C列 ABCD - CD - AB ABCD - BCD - A ABCD - GH - ABCD という風にC列に関数で結果を表示したいのです。 方法はないでしょうか? よろしくお願いします。

  • 文字列に空白を入れたい

    たくさんのデータがあるのですが、名前の列があるとして、 その名前はすべて、苗字が二文字の人のみの時に、苗字の名前の間に空白を入れたいのですが(ようするに、二文字目と三文字目の間に全角空白を入れたい。)、どのようなやりかたがあるでしょうか。 すぐに教えてくれると助かります。

  • excelの文字列の操作について

    A列、C列、E列、G列・・・の1行目にはタイトルが入力されており、 B列、D列、F列、H列・・・には不特定の文字列が入力されており、それぞれ行数も不特定です。 A列、C列、E列、G列・・・の1行目のタイトルはA列にまとめ、B列、D列、F列、H列・・・の文字列はB列にまとめたいです。 下の例の場合だと、C列の1行目のタイトルをB列の下端の左下にあたる(A7)に移動させ、 D列の2行目から入力された文字列を右となりの(B7)に移動させたいです。これの繰り返しです。     A列     B列     C列     D列 1    あ       A       い       2             B                a   3            C                b 4              D               c 5             E                6              F                            ↓     A列     B列     C列     D列 1    あ       A              2             B                   3            C                 4              D                5             E                6              F      7      い      a 8             b 9             c よろしくお願いします。

  • エクセルで末尾の空白を消したい

    文字列「AB CD  」という感じで文字間と末尾に空白が入っています。 これを文字列「AB CD」という風に末尾の空白だけを消したいのですが何か良い方法は無いでしょうか? 文字長は「ABC  DEF   」や「A BC 」などはマチマチです。 皆さんどうかよろしくお願いします。

  • EXCELの文字列操作について

    EXCEL2003において 下記のように列の不特定の場所に()で覆われた文字列があります。 行列ともに随時変更されます。 ( )内が1文字の時は、たとえばA4の(赤)をひとつ上のA3の名古屋に文字を結合し、名古屋(赤)としたいです。B列ならB3の(青)を茨城に結合し、茨城(青)といった感じにです。 また、C4のように( )内が2文字以上の時は、削除したいです。      A列     B列     C列 1    東京      千葉    北海道 2    大阪     茨城    長野 3    名古屋    (青)    鹿児島 4     (赤)     三重    (不適当) よろしくお願いします。

  • エクセルの文字列並べ替えについて

    エクセルの文字列並べ替えについて エクセル2000です。 半角文字列の数字とアルファベットを通常のエクセルの機能で昇順で並べ替えた場合 012 013 111 1AA 1B1 211 222 22C 23A 2AB 2BC のように並ぶと思います。(ここでの数字は数値でなく、すべて文字列です) 数字→アルファベットの順番のようです。 これを「アルファベット」→「数字」の順番で並べ替える方法はないでしょうか? 以下のような順にです。 ユーザー定義のリストに基づいた並べ替えがあることは存じていますが、3桁だけでも英数混在だと36×36×36=46,656個のリストを登録しなければならないことになり、現実的と思えません。 目的は、ホストコンピュータから出力される紙のデータがなぜかこのような順で出てきて、それにエクセルで作成したデータをあわせる必要が出てきたためです。 012 013 1AA 1B1 111 2AB 2BC 211 22C 222 23A エクセルの一般機能でもVBAでもかまいません。ご教示いただけると幸いです。

  • Excelで複数の列の中の文字を一列に並べる!

    Excelに関して質問です。 複数の列に入力されている文字を一つの列にまとめる方法が知りたいです。 その際、文字が入力されていない箇所は詰めて並べたいと思います。 範囲はB4~AD83の間です。 ただ、状況として範囲内の空白には書式(関数)が入っている状態です。 例  A   B   C     D   E 1文字1 空白 文字2  文字3  空白 2空白 文字4 文字5  空白   空白 F 文字1 文字2 文字3 文字4 文字5 何卒、ご教授よろしくお願いします。

  • Perlで文字列の操作がしたい

    Perlで文字列の操作がしたい ---test.txt--- あ PC 100 a b c あ HIw 100 f g h あ HIw 100 あ sHI 130 z e i あ sHI 100 f p あ sHI 100 t p 以下、3000行程度続く(空白は、タブ区切り。) -------------- 上記のようなデータがあります。 比較したいのは、a b c(3列目以降のデータ)という部分になります。(実際は、10桁の英字列です) 処理は、 1行目のabcに該当する部分は全データの中で1行のみ必要。他の行は削除。 また、ここにデータが無い場合も削除。 それ以外は、保存。 順序は問わない。 というものです。説明が難しいので下記に例を挙げました。 --例-- あ PC 100 a b c <保存。 あ HIw 100 f g h <a,b,cのいずれも含まなず、空白でもないので保存。 あ HIw 100    <a,b,cのいずれも含まない。しかし、空白なので削除。 あ sHI 130 i j f <a,b,c,f,g,hのいずれかを含むので削除。 あ sHI 100 k a  <a,b,c,f,g,h,i,jのいずれかを含むので削除。 あ sHI 100 z ab cd  <a,b,c,f,g,h,i,j,kのいずれも含まないので保存。(ab cd はひとつのかたまり) あ sHI 100 a ab cdd  <a,b,c,f,g,h,i,j,k,z,ab,cdのいずれかを含むので削除。 い sgI 100 ga adb ced  <a,b,c,f,g,h,i,j,k,z,ab,cd,cddのいずれも含まないので保存。 で結果出力は、 あ PC 100 a b c あ HIw 100 f g h あ sHI 100 z ab cd い sgI 100 ga adb ced 以上、ややこしいのですが、もし、お時間などありましたら、ご回答いただけますと幸いです。 宜しくお願い致します。 なお、 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2382509 では大変お世話になりました。 このコードを応用しようと思ったのですが、条件が複雑で、私の力では無理でした。 因みに、こういったコードを作れるコツでもあるのでしょうか? 私などは、かなり考えても思いもつきませんが・・・(涙;

    • ベストアンサー
    • CGI
  • エクセル 文字列操作

    セルA1とB1が以下のようになっており C1にA1とB1を足した文字列をダブルクオートで囲んだデータに したいのですがうまくいきません。ご教授お願いいたします。 A1=東京都 B1=千代田区 C1="東京四千代田区"

  • B列とC列のいずれかに文字が入力されています。

    B列とC列のいずれかに文字が入力されています。 B列とC列同時に入力されていることはなく、B列とC列とも空白のこともあります。 この時、A列にB列、C列の文字をコピーするためにはA列にどのような関数を用いればよいですか。 A  B  C あ    あ い い           う    う といった具合です。 

専門家に質問してみよう