Excel VBA質問箱 IV

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

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


7113 / 76732 ←次へ | 前へ→

【75210】Re:複数の範囲(膨大)を、変数に取り込む
発言  kanabun  - 14/1/8(水) 13:18 -

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

>手元の表は...縦にはセルe8からe16まで、7個空けてe24からe32まで、とこれが下に25回並んでおり、横方向にはe8から2個空けてh8からh16まで、また2個空けてk8からk16までという具合に、こちらは27回並んでいます。

う〜ん、それだけたくさんのエリアだと、配列化はしにくいですね。
ちょっと時間はかかるけど、セルに直接アクセスしましょう。
最初のセルが[E8]で、[D8]に数値(部数)が書いてあると仮定します。

>  '縦25回
>  '横27回

ですから、縦方向へは 16セルづつジャンプすると、各エリア(連続範囲のこと)の
先頭セルですね。
列方向は 3セルづつジャンプしながら、27回。
こうして各エリアの先頭セルが求まりますから、
先頭セルから行方向に9セル Resizeしたセル範囲が対象エリアです。

Sub test3()
  Dim n As Long
  Dim y As Long, x As Long
  Dim ss As String
  Dim c As Range
  Const Y0 = 8, YY = 25, Ystp = 16 '縦方向 最初の行番、繰り返し回数,Step
  Const X0 = 5, XX = 27, Xstp = 3 '列方向 最初の列番、繰り返し回数,Step
  Dim dic As Object
  Set dic = CreateObject("Scripting.Dictionary")
  
  For x = X0 To X0 + (XX - 1) * Xstp Step Xstp
   For y = Y0 To Y0 + (YY - 1) * Ystp Step Ystp
     For Each c In Cells(y, x).Resize(9)
      ss = c.Value
      If Len(ss) > 0 Then
       n = c.Offset(, -1).Value
       If Not dic.Exists(ss) Then
         dic(ss) = n
       ElseIf dic(ss) < n Then
         dic(ss) = n
       End If
      End If
     Next
    Next
  Next
  For x = X0 To X0 + (XX - 1) * Xstp Step Xstp
   For y = Y0 To Y0 + (YY - 1) * Ystp Step Ystp
     For Each c In Cells(y, x).Resize(9)
      ss = c.Value
      If Len(ss) > 0 Then
        c.Offset(, -1).Value = dic(ss)
      End If
     Next
    Next
  Next
  
End Sub

293 hits

【75209】複数の範囲(膨大)を、変数に取り込む 初心者M 14/1/8(水) 12:03 質問
【75210】Re:複数の範囲(膨大)を、変数に取り込む kanabun 14/1/8(水) 13:18 発言
【75211】Re:複数の範囲(膨大)を、変数に取り込む 初心者M 14/1/8(水) 13:59 質問
【75212】Re:複数の範囲(膨大)を、変数に取り込む kanabun 14/1/8(水) 14:35 発言
【75213】Re:複数の範囲(膨大)を、変数に取り込む 初心者M 14/1/8(水) 15:00 お礼
【75214】Re:複数の範囲(膨大)を、変数に取り込む kanabun 14/1/8(水) 16:57 発言
【75215】Re:複数の範囲(膨大)を、変数に取り込む kanabun 14/1/8(水) 17:06 発言
【75216】Re:複数の範囲(膨大)を、変数に取り込む 初心者M 14/1/8(水) 17:22 発言
【75217】Re:複数の範囲(膨大)を、変数に取り込む kanabun 14/1/8(水) 17:33 発言
【75218】Re:複数の範囲(膨大)を、変数に取り込む 初心者M 14/1/8(水) 17:51 発言
【75219】Re:複数の範囲(膨大)を、変数に取り込む kanabun 14/1/8(水) 18:01 発言
【75220】Re:複数の範囲(膨大)を、変数に取り込む 初心者M 14/1/8(水) 18:04 お礼

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