
いつもお世話になっております。
めぐみん様
下記の書き出しのコードで
教えていただきたいことがあります。
付け加えた部分です。
key = r.Value & "_" & r.Offset(, 1).Value
v(1, m) = v(1, m) + WorksheetFunction.Sum(r.Offset(, 3))
rr.Offset(, 1).Resize(, 2) = Split(key, "_")
添付ファイルの黄色反転致しました
合計と個数がうまくされません。
おしえてくれませんでしょうか
Dim myDic As Object
Dim r As Range, m As Long
Dim key As Variant, v As Variant
Set myDic = CreateObject("Scripting.Dictionary")
For Each r In Range("a2", Cells(Rows.Count, "a").End(xlUp))
key = r.Value & "_" & r.Offset(, 1).Value
If Not myDic.Exists(key) Then
myDic.Add key, Range("F1:AG1").Value
m = IIf(Month(r.Offset(, 2).Value) < 4, _
Month(r.Offset(, 2).Value) + 9, Month(r.Offset(, 2).Value) - 3)
m = m * 2
v = myDic(key)
v(1, m - 1) = v(1, m - 1) + 1
v(1, m) = v(1, m) + WorksheetFunction.Sum(r.Offset(, 3))
myDic(key) = v
End If
Next
Set rr = Range("F3")
For Each key In myDic.keys
rr.Offset(, 1).Resize(, 2) = Split(key, "_")
rr.Offset(, 3).Resize(, 24).Value = myDic(key)
Set rr = rr.Offset(1)
Next
Set myDic = Nothing
Set r = Nothing

No.4ベストアンサー
- 回答日時:
あ~。
やっぱ実際に検証しないと初級レベルでは解決できないなんて・・・
⇒と言っても検証してないのですが・・・
Dim myDic As Object
Dim r As Range, m As Long
Dim key As Variant, v As Variant
Set myDic = CreateObject("Scripting.Dictionary")
For Each r In Range("a2", Cells(Rows.Count, "a").End(xlUp))
key = r.Value & "_" & r.Offset(, 1).Value
If Not myDic.Exists(key) Then _ ' "_" にてIf文は1行に纏める
myDic.Add key, Range("F1:AG1").Value
m = IIf(Month(r.Offset(, 2).Value) < 4, _
Month(r.Offset(, 2).Value) + 9, Month(r.Offset(, 2).Value) - 3)
m = m * 2
v = myDic(key)
v(1, m - 1) = Val(v(1, m - 1)) + 1 '念のため数値化変換
v(1, m) = Val(v(1, m)) + r.Offset(, 3).Value
myDic(key) = v
'End If '上で1行にしているので不要
Next
Set rr = Range("F3")
For Each key In myDic.keys
rr.Offset(, 1).Resize(, 2) = Split(key, "_")
rr.Offset(, 3).Resize(, 24).Value = myDic(key)
Set rr = rr.Offset(1)
Next
Set myDic = Nothing
Set r = Nothing
いつもお世話になっております。
と初級レベルでは めぐみん様はちがいます
この頃いろんなサイト拝見して
おもったこと。
めぐみん様のコードわかりやすいんです。
ありがとうございました。
いまから、試します。
System.Collections.ArrayListで
解決しているのですが
なんとなく、これでもいけるのかな
と思いやってみました。
No.3
- 回答日時:
あ”””””””””。
更にミスった。
For Each r In Range("a2", Cells(Rows.Count, "a").End(xlUp))
key = r.Value & "_" & r.Offset(, 1).Value
m = IIf(Month(r.Offset(, 2).Value) < 4, _
Month(r.Offset(, 2).Value) + 9, Month(r.Offset(, 2).Value) - 3)
m = m * 2
If Not myDic.Exists(key) Then
myDic.Add key, Range("F1:AG1").Value
v = myDic(key)
v(1, m - 1) = 1
v(1, m) = r.Offset(, 3).Value
myDic(key) = v
Else 'key の重複の有無で処理が変わりますが、片方が漏れてたからでは?
v = myDic(key)
v(1, m - 1) = v(1, m - 1) + 1
v(1, m) = v(1, m) + r.Offset(, 3).Value
myDic(key) = v
End If
Next
こうかな?
No.2
- 回答日時:
あ”。
違ったかな?
For Each r In Range("a2", Cells(Rows.Count, "a").End(xlUp))
key = r.Value & "_" & r.Offset(, 1).Value
m = IIf(Month(r.Offset(, 2).Value) < 4, _
Month(r.Offset(, 2).Value) + 9, Month(r.Offset(, 2).Value) - 3)
m = m * 2
If Not myDic.Exists(key) Then
myDic.Add key, Range("F1:AG1").Value
v(1, m - 1) = 1
v(1, m) = r.Offset(, 3).Value
Else 'key の重複の有無で処理が変わりますが、片方が漏れてたからでは?
v = myDic(key)
v(1, m - 1) = v(1, m - 1) + 1
v(1, m) = v(1, m) + r.Offset(, 3).Value
myDic(key) = v
End If
Next
No.1
- 回答日時:
救急外来から帰ってきたとこなのでボケてるかもですが。
>v(1, m) = v(1, m) + WorksheetFunction.Sum(r.Offset(, 3))
私このコードって書いた事ありましたっけ?
セル範囲が1つなのにSUM関数を用いるって・・・その時もボケてた?
過去の質問の修正を上げるのであればその時の質問のリンクを貼ってもらえると助かります。
普通に考えられるのはSUM関数は不要で、
v(1, m) = v(1, m) + r.Offset(, 3).Value
になると思われるのですが・・・?
いつもお世話になっております。
最初 ご教授頂いたのは
v(1, m) = v(1, m) + r.Offset(, 3).Value
でした。
いじくりまわして、sumになっていました。
お体大丈夫でしようか。
お大事にしてください。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBA セルの値がおかしいです
-
VBA セル間のリンク修正につい...
-
VBAでCOPYを繰り返すと、処理が...
-
VBAから書き込んだ条件付き初期...
-
WindowsのOutlook を VBA から...
-
マクロの記録を使用したマクロ...
-
vbsでのwebフォームへの入力制限?
-
ダブルクリックで貼り付けた画...
-
エクエルのVBAコードについて教...
-
ExcelのVBAコードについて教え...
-
vbs ブック共有を解除
-
VBAでFOR NEXT分を Application...
-
Excelのマクロについて教えてく...
-
Vba WorkBooks.Openについて教...
-
Vba 型が一致しません(エラー1...
-
【ExcelVBA】5万行以上のデー...
-
VBAでセルの書式を変えずに文字...
-
[Excel VBA]特定の条件で文字を...
-
【VBA】値を変更しながら連続で...
-
vba textboxへの入力について教...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
foreachで上限回数指定方法また...
-
マッチング処理(1:N)
-
超難問 Scripting.Dictionary ...
-
Dictionary(連想配列?)の使い方
-
foreachとかの勝手な省略?
-
PHPの構文で間違えが分からない
-
PHPでこのコード自体に意味は無...
-
VB.NET で 二次元のハッシュは...
-
ftokが動かない?
-
Excel VBAでフィルター後の対象...
-
PHPで連想配列のプルダウンメニ...
-
PHP:ツリー構造をulとli要素に...
-
PHP、{}記号の意味
-
smartyでtplファイルでの2次元配列
-
配列の値によって条件分岐がし...
-
POSTで渡されるデータの数がわ...
-
pdfファイルの複数添付 引数の型
-
ulのネストをタブ区切りに変換...
-
リストボックス複数選択抽出方法
-
多次元配列の中で条件に合う要...
おすすめ情報
うれしいです
うまくできました。
ありがとうございました。
お体大切に