【エクセル】データの結合方法

このQ&Aのポイント
  • エクセルでデータの結合方法について教えてください。
  • 結合前のデータのルールや結合時のルールについて詳しく教えてください。
  • 結合後のデータの形式についても教えてください。
回答を見る
  • ベストアンサー

【エクセル】データの結合方法

エクセルで、各セルにあるデータを次の内容で結合したいのですが、方法が分からないので、 ご教示お願い致します。 <結合前> A1|A3|A7|A10|A11|A12 BC1|BC4|BC7|BC10|BC11|BC12|BC15 ※"|"はセルの区分けのつもりです。 <結合後> A1,3,7,10,11,12 BC1,3,7,10~12,15 結合前のデータのルールは、 ・英字+数字の組合せ。 ・英字は1文字もしくは複数文字。 ・データが増える際は、セルの右の欄に追加される。 ・横に増えるデータの英字は必ず同じ。 結合時のルールは、 ・英字は必ず同じなので、一番最初にのみ表すこと。 ・データ(数値)の区切りは","(カンマ)で分けること。 ・連続したデータ(数値)の場合は、始まりの数値と終わりの数値の間に"~"(チルダ)を入れて、纏めて表示すること。 内容が分かりづらい場合は補足しますので、何卒宜しくお願いします。

  • hemuru
  • お礼率76% (151/197)

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

  • ベストアンサー
  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.4

後方に空白セルがあっても、できるようにするというのであれば、下記の1行を追加すればいいでしょう。 これで、下方にフィルできます。 s = s0 i = 1 For Each c In rng cdat(i) = c.Value If c.Value = "" Then Exit For    'ここに、この1行を追加する l = Len(cdat(i)) n = Val(Right(cdat(i), l - l0)) cdat(i) = n & ","

その他の回答 (3)

  • okormazd
  • ベストアンサー率50% (1224/2412)
回答No.3

ユーザー定義関数です。 結合したい範囲を選択してください。選択範囲は、1列、または1行です。 cdatで20個までにしておきましたが、配列添え字を増やせばいいです。 既定のworksheet関数の組み合わせでは、作業列を使っても難しいでしょう。 原始的に書いただけなので、もっといい方法があるかもしれません。 エラー処理などはしていません。 Function test(rng As Range) As String Dim cdat(20) As String, i As Integer, i0 As Integer Dim l As Integer, l0 As Integer, s0 As String, s As String Dim c As Range, n As Integer, n0 As Integer Dim f As Integer f = 0 l = Len(rng(1)) For i = 1 To l s = Mid(rng(1), i, 1) If Asc(s) >= 48 And Asc(s) < 58 Then l0 = i - 1 s0 = Left(rng(1), l0) Exit For End If Next s = s0 i = 1 For Each c In rng cdat(i) = c.Value l = Len(cdat(i)) n = Val(Right(cdat(i), l - l0)) cdat(i) = n & "," If i > 1 Then If n = n0 + 1 Then cdat(i) = "~" & cdat(i) cdat(i - 1) = Left(cdat(i - 1), Len(cdat(i - 1)) - 1) f = f + 1 If f > 1 Then cdat(i - 1) = "" End If Else f = 0 End If End If n0 = n i = i + 1 Next i0 = i - 1 For i = 1 To i0 s = s & cdat(i) Next s = Left(s, Len(s) - 1) test = s End Function

hemuru
質問者

補足

ご回答ありがとうございます。 回答頂いた内容を組み込んだところ、ひとまず思い通りの結果が取り出せました。 ですが、セルを的確に設定しなければならない事から、データ量が変化すると対応出来ませんでした。 データ量(A1|A2...の量)を範囲指定して、 数値が入っていないセルは飛ばす。 上記の様な処理は出来ないでしょうか。 ご教示宜しくお願い致します。

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

エクセル関数には、文字列の文字部分と数字部分を簡単に分ける1発の関数が無い。 VBAでも同じ。ですから関数でやると複雑な式になる。 一方質問要求内容が珍奇で、それも関数式でやれば複雑化する要因である。 それでVBAでやってみた。 エクセルで少し変わったことをやろうとすると(特に表の「組み換え) VBAを使わないと出来ないか関数が大変複雑化する。 私は少し変わったことをするにはVBAが必須というのが持論です。 下記は平凡な陳腐なやり方で出来ている。 Sub test02() Dim sh1, sh2 Set sh1 = Worksheets("Sheet4") Set sh2 = Worksheets("Sheet5") K = 2 d = sh1.Range("A65536").End(xlUp).Row For i = 2 To d r = sh1.Cells(i, 255).End(xlToLeft).Column ' MsgBox "r=" & r For j = 1 To r x = sh1.Cells(i, j) If j = 1 Then s = x GoTo p1 End If For K = 1 To Len(x) y = Mid(x, K, 1) If Asc(y) >= 49 And Asc(y) <= 57 Then Exit For End If Next K 'MsgBox i & j & "=" & k '数字文字の始まり位置 'MsgBox i & j & "=" & Mid(x, k, Len(x) - k + 1) '数字部分 s = s & "," & Mid(x, K, Len(x) - K + 1) p1: Next j MsgBox s sh2.Cells(K, "A") = s K = K + 1 Next i End Sub 例データ Sheet4 質問のデータ 結果 Sheet5 A2:A3 A1,3,7,10,11,12 BC1,4,7,10,11,12,15 ーー B列以右の列の文字部分がA列のそれと同じか、などのチェックは省いている。

hemuru
質問者

補足

ご回答ありがとうございます。 VBAに関してはど素人でして、上手く組み込めていません。 標準モジュールで回答頂いた内容を貼り付けてみましたがダメでした。 (Functionで始まる形式で無い為?) 使い方をご教示頂けると大変助かります。 何卒、宜しくお願いします。

回答No.1

チルダに関してはG列くらいなら何とか作業列を駆使し対応できるかもしれませんが とりあえず、なし版で9文字まで A5セル =LEFT(A1,LEN(A1)-LEN(LOOKUP(9^9,1*RIGHT(A1,{1,2,3,4,5,6,7,8})))) 下へ オートフィル B5セル =A5&SUBSTITUTE(TRIM(SUBSTITUTE(A1&B1&C1&D1&E1&F1&G1,A5," "))," ",",") 下へ オートフィル ----------------- A9セル =IF(A1="","",SUBSTITUTE(A1,$A5,"")*1) A13セル =A9 B13セル =IF(AND(A9+1=B9,B9+1=C9),"~",B9) G13セル =G9 で力尽きた(^^; ----------------- 「A」のほうは連続にならないのはなんで?

hemuru
質問者

補足

ご回答ありがとう御座います。 内容を試したところ、私の方でもかなり近いところまで行けました。 >「A」のほうは連続にならないのはなんで? 英字は、品種を指しています。数字はそれに振られた番号になります。 A1|A3|A7|A10|A11|A12 上記の数値以外でも、 A2|A4|A5|A6|A8|A9 と、実際は、間の番号も他の列には出てきます。 データは適当に入力していますので、 データの内容には特に意味は持たせていないつもりです。

関連するQ&A

  • エクセルの文字列を結合しても、数値の桁区切りが消えないようにするには?

    例えばエクセルで、 「A1」のセルには「定価」、 「A2」のセルには「1000」、 「A3」のセルには「円」という文字が入っていたとします。 このエクセル上の文字列を「=CONCATENATE(A1,A2,A3)」の関数で結合します。 「A2」の書式設定は、数値にして桁区切りにチェックを入れているので、 セルの表示上は「1,000」となっていますが、「CONCATENATE」でセルを 結合した後の結果は以下のようにカンマが消えてしまいます。 CONCATENATE(A1,A2,A3)の結果 ⇒ 定価1000円 これを「定価1,000円」という風に表示させる良い方法はないでしょうか? 宜しくお願いいたします。

  • 「エクセル」で、「セルの結合」をしても2つ目のデータが消えないようにしたいのですが

    「エクセル2000」で、別々のセルに入力しているデータ(文字や数字)を、 それぞれ生かしたままセルを統合することは出来るのでしょうか? 「セルの書式設定」で「セルの結合」をすると、左上端の文字は残りますが、 それ以外のデータは消されてしまいますよね? 例えば、A1のセルに「20」、B1のセルに「30」と入って いる場合、結合すると「20」は残って「30」のデータは消えて しまいますよね。 それを、一つのセルに「2030」と統合出来るように したいのですが… (出来れば「20/30」のように、 間に「/」等が入るようにしたいのですが…) 無理でしょうか?

  • エクセルの結合したセル

    こんにちわ。 上下に結合したセルがAの列に並んでいます。A1、2で一つ、A2、3で一つというふうに。 そこに日付が入っています。 Bの列も同様にあり、そこには文字列が入っています。 それらを一つのセルにまとめたものを別のシートに作ろうと思いました。 文字列と日付なので&とTEXTを使い、うまくいったのですが、一番上を合わせて、下へスライドコピーしたらデータが飛び飛びになってしまいました。 結合した場合番地が上のセルの番地になります。A1,2なら番地はA1。 なのでA2には何も数値がないので、空白扱いとなってしまいました。 データ量が多いので、できればスライドさせて一気にやりたいのですが、なにかいい方法はありませんでしょうか? 難解な文章で申し訳ありません。。

  • Excelでセルを結合してデータをまとめるには?

    Excelのセルの結合がうまくいかずに困っています。 あ A か A さ A た B な B は B 上の文字はすべてそれぞれのセルに入っているとします。例えば「あ」はA1で「な」はA5です。 これを以下のような表にしたいのです。 あ  か A さ た な B は このとき、「あかさ」は同じセル(つまり、A1)、AはセルB1 また、「たなは」はA2、BはセルB2 単純に結合すると、「あ  」 と、他のセルの文字が消えてしまうので困っています。 解決法を教えていただければありがたいです。

  • エクセルでセルを結合したあとも条件適用できますか?

    (図1) A1~A6までは関数が入ったセル。 B1~B6まではドロップダウンリストになっているセル。 (「あ」or「い」をリストから選択) A1~A6は、条件付き書式ルールで、 B1が「あ」だったら、A1が「赤文字」になる。    「い」だったら、A1が「緑文字」になる。 ※A1~A6までは同じ設定です。 ここからが問題点です。 (図2) B1~B3のセルを結合すると、A1は「赤文字」になりますが、 A2、A3は元の「黒文字」になってしまいます。 ※A4~A6も同じ現象です。 セルを結合した後も、隣のセルの内容によって、 「条件付き書式ルール」が適用される設定はございますでしょうか? お手数お掛け致しますが、宜しくお願い致します。 -作業環境- Excel2007 windows7

  • エクセルのセルの結合について

    A1からA5まで結合されているせるがあり、結合解除すると「選択範囲には複数のデータ値があります。」というメッセージがでます。 そしてOKを押すとセル結合が解除され、A1からA5までの全てのセルに文字がされている状態になるのですが、これはどのように実装されているかご存知の方いらっしゃいますでしょうか? もしいらっしゃいましたらご教授願います。

  • エクセルVBAでセル結合

    いつもお世話になっています。 エクセル2003でVBAを使って下記をしたいのでその、VBA構文を教えて下さい。 特定の列のあるセルに文字が入っています。 (文字が入っている列は固定ですが、行番号はデータによって変わります。例えば、Aデータの場合は「J30」、Bデータの場合は、「J55」だったりします。) この文字が入っているセルをVBAで検索し、検索したセルを右隣のセルと結合します。(先ほどのAデータの場合、J30:Z30に結合します。) 更に、文字が入っているセルが2以上の複数の場合があります。(先ほどのAデータの場合、「J30」と「J40」と「J45」という感じです。文字が入っているセルの数はデータにより異なります。) 結合が終わり、このシートのデータがあるところだけに罫線を引きます。(このシートのデータというのは、前述の文字とそれ以外は、「数字」と「・」です。 ややこしいですが、よろしくお願いします。

  • excel結合されたセルのコピー

    A4,5,6 A7,8,9 A10,11,12・・・ BC4,5,6 BC7,8,9 BC10,11,12・・・ と 結合されているセルを含む表があります。 これを  コピーしたいのですが コピーを含む範囲に 貼り付ける範囲も含まれます。 このとき 貼り付けすると 結合が解除されてしまいます。 解除されずに そのまま 貼り付けすることはできないのでしょうか?

  • EXCELで文字データを結合するには?

    D列のセル内のデータと、E列のセル内のデータを結合させたいと思って、F列にD1&E1という風に指定してみて、うまくいったのですが、このやり方ではD列とE列を削除してしまうと、エラーが出てしまいますよね。 他のやり方で文字データを結合できるんでしょうか。あるいは、数式の結果を単なる文字列(?)に変換して、もともとの参照データを削除してもエラーがでなくしたり、できるんでしょうか?

  • セルの結合

    エクセルについてですが、 セルの結合は2つのセルの場合1つのセルのみ文字(数値)が入力されていればその入力文字(数値)が表示されますが、 複数だと左上端の文字(数値)だけが表示されますよね? これを、例えば横に並んだ2つのセルそれぞれに 文字が入力されているとします。 セルのみを結合して、その結合された1つのセルの中に両方の文字が表示されることって出来ないのでしょうか?

専門家に質問してみよう