Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


6573 / 13644 ツリー ←次へ | 前へ→

【44456】結合されたセルの並び替え べに 06/11/17(金) 10:01 質問[未読]
【44460】Re:結合されたセルの並び替え ハチ 06/11/17(金) 11:27 回答[未読]
【44461】Re:結合されたセルの並び替え Jaka 06/11/17(金) 11:29 発言[未読]

【44456】結合されたセルの並び替え
質問  べに  - 06/11/17(金) 10:01 -

引用なし
パスワード
   失礼致します。

   A     B     C
1   30     ささ    しし 
2         すす    せせ
3   10     ああ    いい
4         うう    ええ
5   20     かか    きき
6         くく    けけ

と、こんなどうしようもない表があったとして、
A1,A2、A3,A4、A5,A6はそれぞれ結合されています。

これらを並び替えして、


   A     B     C
1   10     ああ    いい
2         うう    ええ
3   20     かか    きき
4         くく    けけ
5   30     ささ    しし 
6         すす    せせ

このようにしたいのですが、
何か良い方法はありますでしょうか?

【44460】Re:結合されたセルの並び替え
回答  ハチ  - 06/11/17(金) 11:27 -

引用なし
パスワード
   ▼べに さん:

一度、値を結合範囲にセットしながら解除して
並び替え後に再度結合するとかどうでしょう?

A列以外にも結合範囲があるのなら
うまく応用してください。

Option Explicit

Sub Test()
  Dim Ran As Range
  Dim MerR As Range
  Dim R As Range
  Dim buf As String
  
  '結合解除
  For Each Ran In Range("A1:A6")
    If Ran.MergeCells Then
      buf = Ran.MergeArea(1, 1).Value
      Set MerR = Ran.MergeArea
      Ran.UnMerge
      For Each R In MerR
        R.Value = buf
      Next R
      Set MerR = Nothing
    End If
  Next Ran
  '並べ替え
  Range("A:C").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
  OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, SortMethod _
  :=xlPinYin
  '再結合
  Application.DisplayAlerts = False
    For Each Ran In Range("A1:A6")
      If Ran.MergeArea(1, 1).Value = Ran.Offset(1).Value Then
        Union(Ran.MergeArea, Ran.Offset(1)).Merge
      End If
    Next Ran
  Application.DisplayAlerts = True
End Sub

【44461】Re:結合されたセルの並び替え
発言  Jaka  - 06/11/17(金) 11:29 -

引用なし
パスワード
   ありきたりの返答をするのもなんだと思ってましたが、
一応定番を結合セルは、いろいろな機能に対応できるようには作られていないみたいです。
マクロを使わない方法を考えているんですが、これがなかなか....。

作業列を使います、
D1
=A1

D2
=IF(A2=0,D1,A2)
上の関数を必要なところまで下にフィル。
関数を入れたセルを選択コピーして、同じところに値だけ貼り付け。

結合セルを全解除後にD列をキーにしてソート。
D列の値を見てA列を結合しなおす。

って、マクロを使った方が良いかも知れないですね。

6573 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free