Excel VBA質問箱 IV

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

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


4732 / 76735 ←次へ | 前へ→

【77619】Re:マクロ化の検討
発言  β  - 15/11/10(火) 19:49 -

引用なし
パスワード
   ▼VBAビギナー さん:

独覚さんからの関数処理で充分かとは思いますがVBA処理としての一例です。
元シートが "Sheet1"、結果を "Sheet2" に表示します。

Sub Sample()
  Dim MAXQ As Object
  Dim OKNG As Object
  Dim CONT As Object
  
  Dim c As Range
  
  Set MAXQ = CreateObject("Scripting.Dictionary")
  Set OKNG = CreateObject("Scripting.Dictionary")
  Set CONT = CreateObject("Scripting.Dictionary")
  
  With Sheets("Sheet1")
    For Each c In .Range("A2", .Range("A" & Rows.Count).End(xlUp))
      If MAXQ.exists(c.Value) Then
        If c.Offset(, 1).Value > MAXQ(c.Value) Then MAXQ(c.Value) = c.Offset(, 1).Value
        If c.Offset(, 2).Value <> CONT(c.Value) Then OKNG(c.Value) = "Error"
      Else
        MAXQ(c.Value) = c.Offset(, 1).Value
        OKNG(c.Value) = "OK"
        CONT(c.Value) = c.Offset(, 2).Value
      End If
    Next
  End With
  
  With Sheets("Sheet2")
    .UsedRange.ClearContents
    .Range("A1:C1").Value = Array("製品", "最大重量", "チェック")
    .Range("A2").Resize(MAXQ.Count).Value = WorksheetFunction.Transpose(MAXQ.Keys)
    .Range("B2").Resize(MAXQ.Count).Value = WorksheetFunction.Transpose(MAXQ.Items)
    .Range("C2").Resize(MAXQ.Count).Value = WorksheetFunction.Transpose(OKNG.Items)
    .Select
  End With
  
End Sub

0 hits

【77616】マクロ化の検討 VBAビギナー 15/11/10(火) 15:58 質問[未読]
【77617】Re:マクロ化の検討 独覚 15/11/10(火) 17:32 回答[未読]
【77618】Re:マクロ化の検討 独覚 15/11/10(火) 17:34 発言[未読]
【77621】Re:マクロ化の検討 VBAビギナー 15/11/11(水) 8:36 お礼[未読]
【77619】Re:マクロ化の検討 β 15/11/10(火) 19:49 発言[未読]
【77622】Re:マクロ化の検討 VBAビギナー 15/11/11(水) 8:40 回答[未読]

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