プロが教える店舗&オフィスのセキュリティ対策術

エクセルで、列内の連続した文字を一気に結合したい

どういうことかといいますと、例えば列内に
Aさん
Aさん
Aさん
Aさん
Bさん
Bさん
Bさん
Bさん
Bさん
Cさん
Cさん
Cさん
Cさん
Cさん
という列があったとして、セルの結合を行い、一度に
Aさん
Bさん
Cさん
という風にしたいのです。

簡単に行える方法はないでしょうか。

よろしくお願いいたします。

「エクセルで、列内の連続した文字を一気に結」の質問画像
gooドクター

A 回答 (9件)

質問通りにセルを結合するようにしてみました。


 
 作って気が付いたんですが、入力したデータを直接結合すると、結合を解除したときに1件を残して空白になってしまいます。結合を解除して修正後、最後結合とかができなくなります。
 
 また、結合済みデータに修正を加えると、再度結合しようとすると重複データが削除されているのでうまくいかない場合が発生します。コピーデータを結合し、元データは非表示にしておくとかが一般的でしょうか。
 
質問者様の考えが分からないので、出力列を指定するようにしています。
 
モジュールの
   '選択列からこの数値分離れた右列に出力
   Const wrtCol = 2

の数値分離れた右列(この場合は2列右)に出力します。「0」にすれば選択したセル範囲を直接結合します。
 
 
ALT+F11を押してVBE画面で挿入メニューから標準モジュールを挿入します。
下記「Sub以下」を標準モジュールに貼り付けます。(今は元データの2列右に出力します)
 
シートに戻り、結合したいセル範囲を選択し、開発タブ>マクロ>マクロ名から「セルの結合」 を選択して実行します。

Sub セルの結合()
  '選択列からこの数値分離れた右列に出力
  Const wrtCol = 2
  
  Dim rw As Integer '行カウンタ

  '確認メッセージを非表示
  Application.DisplayAlerts = False

  '出力位置にコピーする
  Selection.Copy Selection.Offset(0, wrtCol)
  
  'コピーしたデータを結合する
  Selection.Offset(0, wrtCol).Select
  With Selection
    For rw = .Rows.Count To 2 Step -1 '下から結合
      If .Cells(rw) = .Cells(rw - 1) Then
        .Cells(rw - 1).Resize(2).Merge
        .Cells(rw - 1).VerticalAlignment = xlCenter
      End If
    Next
  End With
  
  '確認メッセージを表示するように戻す
  Application.DisplayAlerts = True
End Sub
    • good
    • 2

どうしても結合したいとして、手動でのちょっと効率的なやり方としては



まず、Aさんを全部選択して結合する→結合セルを選択してホームタブの書式のコピー/貼り付けボタン(刷毛のアイコン)をダブルクリックする。

その状態で次にBさんのセルを範囲選択する→Cさんのセルを範囲選択・・・

終わったら、アイコンを再度押すかEscキーを押す。

数がいくつあるかわかりませんので手動でできる範囲なら・・・
    • good
    • 1

質問の「結合」が主目的なのかよく分かりませんが、セルを結合すると複数の文字列を一カ所に集める必要があるわけですが、文字列を複数セル範囲で結合したりする関数がなく、しょうがなくVBAを使ったりします。

逆に、VBAを使うと実行処理が必要だったり、ユーザー定義関数を作っても、それなりに応用できる必要があります。ということで、セルを結合しない方法を考えてみました。


質問の添付図を見ると、左の一覧に対し右の名前はその同じ名前の縦の中央あたりにあるのでそのようにしています。5人だったら3番目の行、4人は2番目、3人は2番目、2、1人は最初の行に表示します。

●算式による対応(添付図の左)
 添付図のセルD2
  =IF(COUNTIF($B$2:B2,B2)=INT((COUNTIF(B:B,B2)+1)/2),B2,"")
 
   下にコピーします。
 
 
●条件付き書式による対応(添付図の右)
 G列にデータを配置しています。
 
 セルG2の条件付き書式の設定は、
 数式を使用して、書式設定するセルを決定で数式は、
  =COUNTIF($G$2:G2,G2)<>INT((COUNTIF(G:G,G2)+1)/2)

 書式はフォントの色を白にしています。
   下に書式をコピーします。


ご参考に。
「エクセルで、列内の連続した文字を一気に結」の回答画像7
    • good
    • 0

準備:


A列にA1からデータを並べておく

手順:
ALT+F11を押す
現れた画面で挿入メニューから標準モジュールを挿入する
現れたシートに下記をコピー貼り付ける

sub macro1()
 dim r as long
 application.displayalerts = false
 for r = range("A65536").end(xlup).row to 2 step -1
  if cells(r, "A") = cells(r - 1, "A") then cells(r - 1, "A").resize(2, 1).merge
 next r
 application.displayalerts = true
end sub

ファイルメニューから終了してエクセルに戻る
ALT+F8を押し、マクロを実行する。
    • good
    • 12

No4です。



いつのまにやら画像が表示されましたが、画像を見る前のマクロですのでデータはA列にあるものとして書いています。

("a1:A" & Range("a"
Range("A" & frow & ":A" & c.Row).Select

上記の部分のaやAを該当の列に変更してください。aとAは取り立てて区別しているわけではありません。すべてAでよろしいです。
    • good
    • 1

-----------------



Aさん


-----------------


Bさん


------------------



Cさん


------------------


みたいにしたいということでしょうか。

マクロです。ALT+F11を押して左側に出ているその操作をしたいシート名をダブルクリックすると右に白い画面が出るのでそこに下記のコードをコピペしてください。エクセル2013で作成しましたがたぶん2007以降だと動くと思います。2003だと無理かもしれません。表示タブの右の端のマクロでマクロの表示でExampleを実行してください。ただし、実行した後に元には戻せませんので、元のファイルをコピーしたものでテストしてください。

Sub Example()
Dim c As Range
Dim frow As Long

Application.DisplayAlerts = False
frow = 1
For Each c In Range("a1:A" & Range("a" & Rows.Count).End(xlUp).Row)
If c.Value <> c.Offset(1, 0).Value Then
Range("A" & frow & ":A" & c.Row).Select
With Selection
.HorizontalAlignment = xlGeneral
.VerticalAlignment = xlCenter
.WrapText = False
.Orientation = 0
.AddIndent = False
.IndentLevel = 0
.ShrinkToFit = False
.ReadingOrder = xlContext
.MergeCells = True
End With
frow = c.Row + 1
End If
Next
Application.DisplayAlerts = True
End Sub
    • good
    • 2

結合したいのはどうしてですか?


私はあまり結合はお勧めしないので、例えば上のセルと同じデータなら文字色を白にするという条件付き書式を設定するなどでは如何でしょうか?

もし、ご要望のことを一度にやるならVBAになるかと思います。

この回答への補足

VBAですか、、よくわかっていないものでして、、
条件付き書式は考えておりませんでした。
ありがとうございます。

補足日時:2014/06/11 01:03
    • good
    • 0

「セルの結合」なんてな言葉を発しておられるけど、誤解してませんか?


「という風にしたい」として示されたものは、単に、“重複”するデータを“無重複”データにしたとしか見えません。
「という列」のどのセルとどのセルを結合したら「という風に」なるのですか?

この回答への補足

説明が足りず申し訳ありません。
例ではありますが図のように、
列内に同一の文字が連続し、それを一つ一つドラッグし、セルを結合する、という作業は非常に時間がかかります。
そのため、画像の矢印の右列内のようなセルの結合を一度にやれないか、という質問でした。

補足日時:2014/06/11 01:02
    • good
    • 0

重複したデータを整理したいという事でしょうか



2007以降だとデータタブに重複の削除というものがありますのでそちらで対応できます。
2003だと以下のページを参考にしてください
http://allabout.co.jp/gm/gc/376556/2/

この回答への補足

ありがとうございます、
実は、重複の削除、ではなく同じ列内にある、同じ値(文字)を一気に結合させたいんです。
ドラッグして結合を何度もやるのはきついので。。。

補足日時:2014/06/11 00:23
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

gooドクター

このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング