Excel VBA質問箱 IV

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

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


9843 / 13646 ツリー ←次へ | 前へ→

【25006】同一データセルを縦に結合 kk 05/5/17(火) 18:26 質問[未読]
【25008】Re:同一データセルを縦に結合 だるま 05/5/17(火) 19:49 回答[未読]
【25044】Re:同一データセルを縦に結合 kk 05/5/18(水) 19:06 質問[未読]
【25048】Re:同一データセルを縦に結合 nossori 05/5/18(水) 19:28 発言[未読]
【25064】Re:同一データセルを縦に結合 小僧 05/5/19(木) 10:23 回答[未読]
【25089】Re:同一データセルを縦に結合 nossori 05/5/19(木) 20:46 発言[未読]
【25178】Re:同一データセルを縦に結合 kk 05/5/23(月) 18:33 お礼[未読]

【25006】同一データセルを縦に結合
質問  kk  - 05/5/17(火) 18:26 -

引用なし
パスワード
   初めまして。
 A列を並べ替えした後、同一データセルがあれば、セルを縦に結合して、見やすくしたいのですが、VBAでは、どのようにすればいいのでしょうか?ご教授ください。
よろしくお願いいたします。

【25008】Re:同一データセルを縦に結合
回答  だるま  - 05/5/17(火) 19:49 -

引用なし
パスワード
   >見やすくしたいのですが
セル結合はデータ処理上不都合が多いのでなるべくやめた方が良いと思います。
見やすくということであれば「〃」にするなどとしてみてはいかがですか。^d^

Sub test()
  Dim myRange As Range
  Dim i As Long
  
  Set myRange = Range("A1")
  Set myRange = Range(myRange, myRange.End(xlDown))
  
  With myRange
    For i = .Cells.Count To 2 Step -1
      If .Cells(i).Value = .Cells(i - 1).Value Then
        .Cells(i).Value = "〃"
      End If
    Next
  End With
  
End Sub

【25044】Re:同一データセルを縦に結合
質問  kk  - 05/5/18(水) 19:06 -

引用なし
パスワード
   >>同一データセルを見やすくしたいのですが
>見やすくということであれば「〃」にするなどとしてみてはいかがですか。^d^

だるま さん 早速ありがとうございます。もう二つお願いします。

(1) 初心者の質問ですみませんが、A1からでなく現在のカーソル位置から下へ同一データセルに「〃」を振って、「〃」のセルだけをセンタリングするにはどうしたらよいでしょうか。

(2) さらに、「〃」で見やすくした列の左に列挿入して、上から連番を振りたいのですが、どうしたらよいでしょうか。「〃」の左は空欄とします。

【25048】Re:同一データセルを縦に結合
発言  nossori  - 05/5/18(水) 19:28 -

引用なし
パスワード
   ▼kk さん:
今晩は
これで如何でしょうか?

Sub test()
Dim MyR As Range
Dim r  As Range
Set MyR = Range("A2", Range("A65536").End(xlUp))
For Each r In MyR
If r.Value = Range("A1").Value Then  
  r.Value = "   〃"   '右に振っています
  r.Offset(, 1).Formula = "=ROW()"      
 End If
Next
End Sub

【25064】Re:同一データセルを縦に結合
回答  小僧  - 05/5/19(木) 10:23 -

引用なし
パスワード
   ▼nossori さん みなさま:
おはようございます。

アクティブセルから下へ検索をし、内容が一緒であれば結合するコードです。

Sub 縦統合()
Dim myRange As Range
Dim Cnt As Long

  For Cnt = 0 To ActiveCell.End(xlDown).Row
    If ActiveCell.Value <> ActiveCell.Offset(Cnt, 0) Then Exit For
  Next

  Set myRange = Range(ActiveCell, ActiveCell.Offset(Cnt - 1, 0))
  
  Application.DisplayAlerts = False
  myRange.MergeCells = True
  Application.DisplayAlerts = True
  
  Set myRange = Nothing
  
End Sub

>セル結合はデータ処理上不都合が多いのでなるべくやめた方が良いと思います。
>見やすくということであれば「〃」にするなどとしてみてはいかがですか。^d^

データ処理を行う上ではだるまさんセルのおっしゃる通り結合を行わない方が良いのですが、
データ処理後の出力用などに使うためには、結合もありかな?と思いまして
コードを作成してみました。

【25089】Re:同一データセルを縦に結合
発言  nossori  - 05/5/19(木) 20:46 -

引用なし
パスワード
   ▼小僧 さん:

今晩は

>アクティブセルから下へ検索をし、内容が一緒であれば結合するコードです。

ありがとうございました。よく分かりました。
kk様の希望どおりなのでしょうか?
どのような作業でこのようなマクロが必要なのかも興味が
あります。失礼しました。

【25178】Re:同一データセルを縦に結合
お礼  kk  - 05/5/23(月) 18:33 -

引用なし
パスワード
   ▼nossori さん 小僧 さん ありがとうございました。

>kk様の希望どおりなのでしょうか?
「〃」でも良かったので、だるま さんの言うようにデータ処理上と表の扱いやすさで「〃」にしました。セル結合のVBAも今後の参考にさせていただきます。

>どのような作業でこのようなマクロが必要なのかも興味があります。
 AccessデータをExelに書き出して、見やすく印刷するのと、氏名等の重複を除いたナンバリングをするためでした。
 皆様のアドバイスを参考に下記を作りました。ありがとうございました。


Sub bangou()
  Dim myRange As Range
  Dim i As Long
  Dim n As Long
  
  If ActiveCell = "" Or ActiveCell.Offset(1) = "" Then
    MsgBox "カーソル位置又は下にデータがありません", vbOKOnly, "実数ナンバリング"
    Exit Sub
    
  ElseIf ActiveCell = "" Or ActiveCell.Offset(, -1) <> "" Then
    MsgBox "左列にデータがあります", vbOKOnly, "実数ナンバリング"
    Exit Sub
  
  End If

  
  Set myRange = Range(ActiveCell, ActiveCell.End(xlDown))
  n = 1
 
  With myRange
    
    For i = 1 To .Cells.Count Step 1
      If .Cells(i).Value <> "〃" Then
        .Cells(i).Offset(, -1).Value = n
        .Cells(i).Offset(, -1).HorizontalAlignment = xlRight
        n = n + 1
        
        ElseIf .Cells(i).Value = "〃" Then
        .Cells(i).Offset(, -1).Value = "〃"
        .Cells(i).Offset(, -1).HorizontalAlignment = xlRight
        
      End If
    Next
        
  End With
 
End Sub

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