• ベストアンサー

文字列操作 空白を空白のままJoinで結合させたいのです。

文字列操作 空白を空白のままJoinで結合させたいのです。 エクセルのいくつかのセルの値を一旦Join で結合させ別BOOKに保存。その後、Split で各セルに書き戻ししてるのですが、空白セルがあると要素数がその分減ってエラーになってしまいます。 例  4つのセルの値の結合が空白が1つあると3つの要素になり、順次4つのセルに書き戻したいのですがエラーになる。 デリミタは$なので ""$555$420$1588 のようになればいいのですが。 どなたかお助け下さい。

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

  • ベストアンサー
  • uruz
  • ベストアンサー率49% (417/840)
回答No.2

配列→Join()→文字列→Split()→配列 と言う流れだと思いますが ""(空白)の要素が含まれていても問題なく機能しますよ。 他の原因でエラーが出てるのではないでしょうか ●   配列      Join()           Split() "AA","BB","CC","DD" → "AA$BB$CC$DD" → "AA","BB","CC","DD" "","BB","CC","DD"   → "$BB$CC$DD"  → "","BB","CC","DD" "AA","","CC","DD"   → "AA$$CC$DD"  → "AA","","CC","DD"

yokokama46
質問者

お礼

今一度確認したお陰で気付きました。 ありがとうございます。 またよろしくお願いします。

yokokama46
質問者

補足

そうですよね。私もそう思ってたんですが‥ >他の原因で‥ 念のため今一度確認したらなんと! $が¥に勝手に変更されているでは有りませんか? 通貨の書式のセルの値(¥は付けない表示形式)が空白のとき (デリミタ$) 配列      Join()    Split() "","AA"   ¥AA    エラー   になってしまう。 ついでに受け側のセルの書式も勝手に通貨に変えられてしまうようです。(多分エクセルの余計な親切仕様?) 通貨のセル以外はデリミタ$で問題なしですが、すべてデリミタ?にしてしまいました。 試してませんが、当方エクセル2007ですが、2000や2003でも同じかな? 仕様のような気がしますが、そうであればデリミタ選択の注意点ですね。

その他の回答 (1)

  • nza49739
  • ベストアンサー率46% (29/62)
回答No.1

答える前に、なぜこのような結合させた状態で別のBookで保存する必要があるのか教えて欲しいです。 というのも、EXCELにはデータだけのコピー・貼り付け機能があるので、これを利用すれば、わざわざ回りくどいことをしなくてもいいので。

yokokama46
質問者

補足

別BOOKはマスタとしています。 すでに登録済みか検索し、近いものもしくは同じものがあった場合マスタから入力シートへ固定情報を転記させる仕様です(入力作業の簡素化) また入力シートは、その内容取り込み別BOOKのマスタに転記していくので、入力シートからマスタ マスタから入力シート及び各種類のシートへ転記という流れがあります。非リレーショナルデータベースみたいなものです。 最初はセル1対1で進めようとしましたが、マスタの閲覧は特に不要なので視認性を求めず入力シートの内容を大分類ごとに結合し集積しておき、必要に応じて呼び出し分解し、必要なシートに書き込んでゆくことにしました。 最初は必須入力のみのセルだけで空白セルの存在がなく問題がなかったのでmyDATA(0)myDATA(1)‥ で問題なかったのですが、空白セルも受け入れなければならない状態になり、表題のように困ってしまった次第です。Dictionaryだと出来るのかな?と思ったのですが、空白を含んでも位置と順番を変えずにシンプルな方法があればと思ってる次第です。セル1対1に戻すにはだいぶ進めすぎてしまったので‥

関連するQ&A

  • Excel - 空白の結合

    以下のようなExcelのシートがあります。   A B C 1 ABC 123 DEF 2 3 456 4 DEF GHI 5 6 GHI 789 123 空白セルを結合したいです。 A1は、A2, A3と結合、A4はA5と結合、B列、C列も同じです。 要は、空白セルを上にある値の入ったセルと結合したいのです。 実際は、かなり大きな表なので、単純に結合していくのはNGです。 (A1と同じ値をA2, A3に入れた方がいいという意見があると思いますが、会社の表なので結合しないといけません。)

  • Excel VBA - 空白の結合

    以下のようなExcelのシートがあります。 A2からC7を選択した後、マクロを走らせて空白セルを結合したいです。   A B C 1 (空白) DDD (空白) 2 ABC 123 (空白) 3 (空白)(空白)(空白) 4 DEF GHI DEF 5 (空白)(空白)(空白) 6 (空白) 789 123 7 (空白)(空白)(空白) 8 GHI JKL MNO A3はA2と結合、A5,6,7はA4と結合、B列、C列も同様です。 要は、空白セルを上にある値の入ったセルと結合したいのです。 ただ、C2が選択範囲外のC1と結合すると困るので、先頭行の空白は、上の選択範囲外セルと結合しないようにしたいです。C2とC3は、結合しませんが、結合する仕様でも問題ありません。 (A2と同じ値をA3に入れた方がいいという意見があると思いますが、会社の表なので結合しないといけません。) ※以前、似たような質問をしましたが、少し違います。(これは未解決です。)

  • join関数で文字列を''で括りたい

    いつもお世話になっております。 SQLのQueryを生成するため、 配列をjoinしようと思ってます。 joinの値は文字列なので、シングルクオーテーションで括りたいと考えてるのですが、 うまい方法を探しております。 ご存知なら御教授いただきたいです。 今はjoinの配列にデータを入れる際にシングルクオーテーションを文字列結合しております。

    • 締切済み
    • PHP
  • join と split で文字列を操作する場合

    にんにちは、 うまく解決する方法を思いつかないので、質問させてください。 以下のスクリプトを実行すると、a から z を * で join して、 その後、* で split するかなと思ったら、split は正規表現として とらえるためでしょうか、エラーになります。 #! /usr/bin/perl -w use strict; my $a = '*'; my $b = join $a , ('a'..'z'); print "$b\n"; my @result = split /$a/,$b; print "$_\n" foreach @result; exit(); $a = '\*'; にすると、split したときに、 余計な \ が残ってしまいます。 任意の(書く時点では分からない)いろんな文字列で 連結したり分割したりする場合のスマートな方法が ありましたら、教えていただけませんか? Perl 5.8 です。お願いします。

    • ベストアンサー
    • Perl
  • MySQL区切った文字列で外部結合はできない?

    MySQLの外部結合について教えてください 「結合の対象となっているカラムの値が一致」は必須なのでしょうか? ■やりたいこと ・Aテーブルaカラム内にある「デリミタの先頭文字列」を抽出して、Bテーブルのidカラムと結合したい ■最終的にやりたいこと ・上記一致条件で、両テーブルデータをSELECTしたい ■試したこと ・「SELECT SUBSTRING_INDEX」で「デリミタの先頭文字列」を抽出できたのですが、そこで行き詰まりました ■質問 ・そもそもやろうとしていることが無謀なのでしょうか? ・テーブル構成を見直した方が良いのでしょうか?

    • ベストアンサー
    • MySQL
  • 文字列の結合、改行、空白削除

    複数のセルを参照して文字列を結合し、2つずつでCHAR(10)で改行し、未入力のセルの空白を削除する方法はありませんか? =SUBSTITUTE(TRIM(A1&" "&B1&CHAR(10)&A2&" "&B2&CHAR(10)&A3&" "&B3&CHAR(10) &A4&" "&B4&CHAR(10)&A5&" "&B5),"","") 現在、上記のような数式を入れて一つのセルに表示させています。 しかし、これだと後半のセルが未入力の場合、空白で表示されるため、表示させるセルの中で結合した文字列が上の方に行ってしまいます。 表示させるセルは縦横共に中央揃えにしたいのですが、何かいい方法はありませんか? まだまだ初心者ですが、いろいろ調べた結果、とりあえず上記の式にたどり着きました。 マクロではなく関数でなんとかなればと考えております。 分かりにくい文章になってしまったかもしれませんが、よろしくお願いします。

  • エクセルで0表示以外のセルの文字列を結合する方法

    エクセル(2003)で文字列の結合を「&」や「CONCATENATE関数」を使っておこなっていますが、文字列の空白または0表示の箇所のセルがあると「文字列000文字列00」のように「0」が表示されてしまいます。IF関数を併用してやっても「0」が表示されます。どのようにしたら「文字列 文字列」のように0表示なしで結合できるでしょうか。教えて下さい。現在、約180のセルにある文字列を1つに結合しようとしています。そのうちの結合文字列は多くて20ぐらいです。また、各セルの文字列はVLOOKUP関数により返しています。よろしくお願いします。

  • 空白を除いて結合したいです

    エクセル2000を使っています。 E列に住所の上半分、F列に住所の残りのデータが入っています。 件数は約200件 E列の住所の後半には空白が入っており、各行で空白の個数が様々です。 E列の空白を取り除き、F列と結合して、G列に住所の全部を入れたいのです。 2ヶ月に一回、この作業があります。 簡単に出来る方法はありますか?

  • Excelの文字列結合について教えてください

    Excelの文字列結合について教えてください。 =SUBSTITUTE(TRIM(CONCATENATE(A1," ",B1," ",C1," ",D1))," ","/") 上記の関数を使い、空白のセルがあった場合そのセルを除外して「/」で区切るまではできたのですが、選択セルに英文が入っていると、英文内のスペース部分にまで「/」が挿入されるようになってしまいました。 例えば「A1」のセルに「This is a pen」「B1」のセルに「Boys」と入力されていると、「This/is/a/pen/Boys」と表示されてしまいます。 これを「This is a pen/Boys」という風に結合させるには、どうしたら良いでしょうか。 よろしくお願いします。

  • 文字列の頭に空白を(エクセル)

    エクセルで一覧表を作成する場合のことでの質問です。 罫線を引くのを後にして、まず文字すべてを入力しました。 文字列すべてを囲って罫線を引いたところ、 各文字列の先頭の文字と縦の罫線との間隔が狭いことが気になりました。 文字一つ一つを選択し先頭にスペースキーで空白を入れるか、 隣り合うセルを選択し「セルを結合して中央揃え」で空白を作るか、 どちらも1個1個ずつ選択しての作業になります。 この面倒な作業意外にもっと簡単にできる方法はありませんか? よろしくお願いします。

専門家に質問してみよう