Excel VBA質問箱 IV

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

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


13791 / 76733 ←次へ | 前へ→

【68444】或るセルの値を他のセルの値にくっつけるには
質問  にしもり  - 11/3/8(火) 16:54 -

引用なし
パスワード
   こんにちは。

下記のシートがあります

 A  B  C   D  E  F  G  H  I  J  K  L  M
1 #  Date METHOD PROD PROF Case DTL Byr Name ADDR INQ ANS OPN
 ===|====|======|====|====|====|===|====|====|====|===|===|====
2 111 0301 PHONE CD  S  HARD A  Cons John TYO xxx aaa NONE
3 111 0301 PHONE CD  S  SOFT B  Cons John TYO yyy bbb NONE
4 112 0301 PHONE DVD M  HARD A  WS  Tom OSA zzz ccc NONE


やりたいことは、、
まずNレコード目とN+1レコード目の#を比べ同じかをみます。(上記では#111が2個あります。)
同じだったらCase列の値を同一セルに格納します。(#111の場合、"F2"を「HARD vbLf SOFT」にします)
また、DTL列の値を同一セルに格納します。(#111の場合、"G2"を「A vbLf B」にします)
そして(この場合、)3行目をDELETEします。
なお、同じ#は2個とは限りませんが#昇順になっています。

以下わたしなりにかんがえました。
(1)最下端の行数を得る。
(2)カレントリージョンを選択する。(必要ない?)
(3)アクティブセルの値が、そのアクティブセル直下のセルの値と同じなら、WrkCountに蓄える。
(4)同じ#は2個とは限らないので改行マークをはさんでwrkRangeに追加します(が、これでは前に書いたものを上書きしてしまいますよね)

ここまででGIVEUPです。この先どうすればいいかどなたかアドバイスくださいませんか。


Public Sub test()

Dim i As Long
Dim n As Long
Dim WrkRow As Long
Dim WrkRange As Range
Dim WrkCount As Long

  With Sheets("Sheet1")
    WrkRow = .Cells(Rows.Count, 1).End(xlUp).Row '・・・(1)
  End With
  
  Range("A1").CurrentRegion.Select '・・・(2)

  n = 1
  For i = 2 To WrkRow
    If Value.ActiveCell(1, i) = Value.ActiveCell(1, i + 1) Then '・・・(3)
      n = n + 1
      WrkCount = n
    Else
      For n = WrkCount To 0
        Value.WrkRange = Chr(10) & Value.WrkRange(6, n) '・・・(4)
        Next n
      n = 1
    End If
  Next i
  
End Sub

2 hits

【68444】或るセルの値を他のセルの値にくっつけるには にしもり 11/3/8(火) 16:54 質問
【68446】Re:或るセルの値を他のセルの値にくっつけ... kanabun 11/3/8(火) 17:22 発言
【68450】Re:或るセルの値を他のセルの値にくっつけ... にしもり 11/3/8(火) 17:53 お礼

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