Excel VBA質問箱 IV

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

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


12 / 13255 ツリー ←次へ | 前へ→

【80531】ユーザ名を比較して、存在していないユーザを補完したい amatsuno 19/2/28(木) 13:52 質問[未読]

【80550】Re:ユーザ名を比較して、存在していないユ... マナ 19/3/2(土) 15:59 発言[未読]
【80561】Re:ユーザ名を比較して、存在していないユ... マナ 19/3/7(木) 21:48 発言[未読]

【80550】Re:ユーザ名を比較して、存在していない...
発言  マナ  - 19/3/2(土) 15:59 -

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

一般機能の「統合」と「ジャンプ」を使う方法もあります。
こんな感じです。

1) sheet1データをSheet2で「統合」:左端列基準で合計
2) 空白セルに「ジャンプ」
3) 行全体を削除
4) sheet1データをSheet3で「統合」:左端列基準で合計
5) 空白セルに「ジャンプ」
6) "23:58:59"を入力

実際のレイアウトが不明なので、
・1行目に共通見出しがあるかどうか
・合計するのがB列なのかC列なのか
で、操作がかわります。

マクロ化することも可能です。

【80561】Re:ユーザ名を比較して、存在していない...
発言  マナ  - 19/3/7(木) 21:48 -

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

「統合」で、重複のないリストを作成し集計できます。
なので、「統合」を使えるようになると、
Dictionaryの出番がちょっとだけ減ります。

複雑なことはできませんが、今回のお題程度であれば、
sheet2もsheet3も、たったこれだけです。

Sub test()
  Dim rngS As Range
  Dim rngD As Range
  
  Set rngS = Sheets("sheet1").Cells(1).CurrentRegion.Offset(1).Resize(, 2)
  
  Set rngD = Sheets("sheet2").Cells(2, 1).Resize(, 2)
  rngD.CurrentRegion.Offset(1).ClearContents
  rngD.Consolidate rngS.Address(, , xlR1C1, True), xlSum, False, True
  On Error Resume Next
  rngD.CurrentRegion.SpecialCells(xlCellTypeBlanks).EntireRow.Delete
  On Error GoTo 0
  
  Set rngD = Sheets("sheet3").Cells(2, 1).Resize(, 2)
  rngD.CurrentRegion.Offset(1).ClearContents
  rngD.Consolidate rngS.Address(, , xlR1C1, True), xlSum, False, True
  On Error Resume Next
  rngD.CurrentRegion.SpecialCells(xlCellTypeBlanks).Value = "23:59:58"
  On Error GoTo 0
  
End Sub

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