Excel VBA質問箱 IV

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

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


6941 / 76732 ←次へ | 前へ→

【75387】Re:以前作って頂いた物の改変(複雑です)
発言  kanabun  - 14/3/19(水) 13:59 -

引用なし
パスワード
   ▼初心者M さん:

C列の記号の出現回数をカウントする もうひとつ別の Dictionary を用意し
ここに出現回数をカウントしていくようにしてみました。

Sub test7() '品名 出現回数をカウント
 Dim n As Long
 Dim y As Long, x As Long
 Dim i As Long, k As Long
 Dim ss As String
 Dim c As Range
 Const Y0 = 8, YY = 84, Ystp = 16 '縦方向 最初の行番・Loop回数・Step数
 Const X0 = 3, XX = 27, Xstp = 3 '横方向 最初の列番・Loop回数・Step数
 Dim dic(1 To 3) As Object
 Set dic(1) = CreateObject("Scripting.Dictionary") '試作品グループ
 Set dic(2) = CreateObject("Scripting.Dictionary") '製品グループ
 Set dic(3) = CreateObject("Scripting.Dictionary") '特別品グループ
 Dim nc As Object
 Set nc = CreateObject("Scripting.Dictionary")
 Dim NCMAX As Long
 
 ActiveSheet.UsedRange.Interior.ColorIndex = xlNone
 NCMAX = [X1].Value
 NCMAX = Val(InputBox$("最大出現回数", , NCMAX))
 If NCMAX < 1 Then Exit Sub
 
 '◆まずC列のキー別に、1段目、2段目、3段目別に、最大値を求める
 For x = X0 To X0 + (XX - 1) * Xstp Step Xstp
  For y = Y0 To Y0 + (YY - 1) * Ystp Step Ystp
   For i = 2 To 8 Step 3 '[C8]セルを1行目として
    Set c = Cells(y, x).Item(i, 1) '2,5,8行目
    'ただし D列に数字が入っていたら
    If WorksheetFunction.IsNumber(c(1, 2)) Then
      '「何もしない」塗りつぶすだけ
      c.Resize(, 2).Interior.Color = vbGreen
    Else
      ss = c.Value
      If Len(ss) > 0 Then
       For k = 1 To 3  '記号のある行の-1行〜2行までの3行
        n = WorksheetFunction. _
          RoundUp(c.Offset(k - 2, 2).Value, -2)
        If Not dic(k).Exists(ss) Then 'keyが無ければ登録
          dic(k)(ss) = n        'その行の数値を登録
          nc(ss) = 1
        ElseIf dic(k)(ss) < n Then 'すでにキーのあるとき
          'この行のnがこれまでの最大値より大きければ
          dic(k)(ss) = n '最大値の更新
          nc(ss) = nc(ss) + 1 '出現回数のカウント
        End If
       Next k
      End If
    End If
   Next i
  Next y
 Next x

 '◆求まったキー別最大値で元表の数値列を更新
 For x = X0 To X0 + (XX - 1) * Xstp Step Xstp
  For y = Y0 To Y0 + (YY - 1) * Ystp Step Ystp
   For i = 2 To 8 Step 3 '[C8]セルを1行目として
    Set c = Cells(y, x).Item(i, 1) '2,5,8行目
    'ただし D列に数字が入っていたら
    If WorksheetFunction.IsNumber(c(1, 2)) Then
      '「何もしない」
    Else
      ss = c.Value
      If Len(ss) > 0 Then
       For k = 1 To 3 '記号のある行の-1行〜2行までの3行
         c.Offset(k - 2, 2).Value = dic(k)(ss)
       Next k
       If nc(ss) > NCMAX Then
         c.Interior.Color = vbRed '制限数超過
       End If
      End If
    End If
   Next i
  Next y
 Next x
  
 MsgBox "持ち上げが完了しました。" & vbCr _
   & "掛け数の設定されている台は、手集計して下さい"

End Sub

7 hits

【75379】以前作って頂いた物の改変(複雑です) 初心者M 14/3/18(火) 11:09 質問
【75380】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/18(火) 12:49 発言
【75381】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/18(火) 13:47 質問
【75382】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/18(火) 19:24 発言
【75383】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/18(火) 19:40 発言
【75384】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/19(水) 10:03 お礼
【75385】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/19(水) 11:00 発言
【75386】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/19(水) 11:26 質問
【75387】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/19(水) 13:59 発言
【75388】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/19(水) 14:35 お礼
【75389】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/19(水) 14:37 お礼
【75390】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/19(水) 15:59 発言
【75391】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/19(水) 16:11 発言
【75392】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/19(水) 17:24 お礼
【75393】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/19(水) 20:11 発言
【75394】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/20(木) 9:13 質問
【75395】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/20(木) 9:34 発言
【75396】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/20(木) 13:21 お礼
【75397】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/20(木) 14:17 発言
【75398】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/20(木) 14:45 発言
【75399】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/20(木) 14:52 発言
【75400】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/20(木) 15:19 発言
【75402】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/20(木) 17:38 発言
【75403】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/20(木) 17:56 発言
【75404】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/20(木) 19:08 発言
【75423】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/24(月) 9:23 質問
【75424】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/24(月) 10:22 質問
【75425】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/24(月) 10:33 発言
【75426】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/24(月) 10:40 発言
【75427】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/24(月) 10:54 発言
【75428】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/24(月) 11:10 お礼
【75429】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/24(月) 11:30 発言
【75430】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/24(月) 11:40 発言
【75431】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/24(月) 11:49 発言
【75432】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/24(月) 13:48 発言
【75433】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/24(月) 14:10 お礼
【75434】Re:以前作って頂いた物の改変(複雑です) kanabun 14/3/24(月) 17:38 発言
【75435】Re:以前作って頂いた物の改変(複雑です) 初心者M 14/3/25(火) 9:46 お礼

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