- ベストアンサー
エクセル 複数のセルの文字を1つにまとめる
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
その他の回答 (5)
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! VBAでの一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに ↓のコードをコピー&ペースト → Excel画面に戻りマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub Sample1() 'この行から Dim i As Long, k As Long, lastRow As Long, buf As String lastRow = Cells(Rows.Count, "A").End(xlUp).Row If lastRow > 1 Then Range(Cells(2, "B"), Cells(lastRow, "B")).ClearContents End If For i = 2 To lastRow If Left(StrConv(Cells(i, "A"), vbNarrow), 1) = "\" Then buf = Cells(i, "A") For k = i + 1 To lastRow If Left(StrConv(Cells(k, "A"), vbNarrow), 1) <> "\" Then buf = buf & " " & Cells(k, "A") Else Exit For End If Next k Cells(i, "B") = Trim(buf) buf = "" i = k - 1 End If Next i End Sub 'この行まで ※ 関数でないのでA列のデータ変更があるたびにマクロを実行する必要があります。m(_ _)m
- mt2008
- ベストアンサー率52% (885/1701)
ANo.2です。 > 連結と不要データの削除までは考えてたのですが、 > これを1つにまとめる数式、配列などの方法はないでしょうか? Excelはセル範囲の文字列を結合する関数が用意されていませんので無理だと思います。 作業列は非表示にすれば良いので1つの式に拘る必要は無いと思いますが。 どうしてもという事でしたらB2セルに↓の式を入れ、条件付き書式で1文字目が「\」でない時はフォント色を白にして見えなくするという手も有ります。 =IF(LEFT(A3,1)="\",A2,A2&B3)
- shintaro-2
- ベストアンサー率36% (2266/6245)
関数で処理する場合、Excel2007と2003以前とでネストできる数が変わるので、古い場合はそれなりに工夫が必要です。 で、お望みのことをやろうとするとこんな感じ b2に貼り付け、コピーしてください。 ¥が\に変わってしまっているので、置換してください。 以前作成したものの流用なので、”)”の数が合ってないかも 下のセルの一文字目を見て、¥でなければ連結するという単純な方式です。 =IF(left(A2,1)="\", IF(AND(left(A3,1)<>"\",left(A4,1)<>"\",left(A5,1)<>"\",left(A6,1)<>"\",left(A7,1)<>"\") ,IF(AND(left(A8,1)<>"\",left(A9,1)<>"\",left(A10,1)<>"\") ,IF(left(A11,1)<>"\" ,IF(left(A12,1)<>"\" ,IF(left(A13,1)<>"\" ,a2&a3&a4&a5&a6&a7&a8&a9&a10&a11&a12&a13 ,a2&a3&a4&a5&a6&a7&a8&a9&a10&a11&a12) ,b2&a3&a4&a5&a6&a7&a8&a9&a10&a11) ,b2&a3&a4&a5&a6&a7&a8&a9&a10) ,IF(left(A8,1)<>"\" ,IF(left(A9,1)<>"\" ,b2&a3&a4&a5&a6&a7&a8&a9 ,b2&a3&a4&a5&a6&a7&a8) ,b2&a3&a4&a5&a6&a7) ) ,IF(left(A3,1)<>"\" ,IF(left(A4,1)<>"\" ,IF(left(A5,1)<>"\" ,IF(left(A6,1)<>"\" ,a2&a3&a4&a5&a6 ,a2&a3&a4&a5) ,a2&a3&a4) ,a3) ,a2) ) ) ,"")
補足
解答ありがとうございます。 ネストすれば1つの数式で処理が可能なんですね。 バージョンは2007なので、そのままこぴぺで利用できました。
- mt2008
- ベストアンサー率52% (885/1701)
- Chiquilin
- ベストアンサー率30% (94/306)
手作業でやるなら B2セルに「=IF(LEFT(A3)="¥",A2,A2&B3)」と入れて下方向にコピー B列全体を値に戻す フィルタでB列から「¥」を含まないデータを抽出してクリア 自動でやるならマクロでどうぞ。
補足
解答ありがとうございます。 いただいた数式ですと、 セルB2には、A2からA16まで、 セルB7には、A7からA16まで連結されてしまいました。 ¥から¥までにする数式はどうなりますでしょうか。 よろしくお願いします
お礼
追加での解答ありがとうございます。 1つにまとめたい意図は、自分が知っている以外の技術を知りたいという所と データ件数が多いため、処理時間や容量を抑えたいという思いからでした。 条件付き書式で設定する発想は思いつきませんでした。 ありがとうございます。