いつもお世話になっております。
めぐみん様
下記の書き出しのコードで
教えていただきたいことがあります。
付け加えた部分です。
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAコードが作動せず、どこに問題があるのか教えて下さい。 3 2023/06/13 13:20
- Visual Basic(VBA) vba 重複データ合算 5 2023/07/05 18:55
- Visual Basic(VBA) オブジェクトが見つかりません 1 2023/06/24 19:43
- Excel(エクセル) 並べ替え、ソートの構文がわからない。 お世話になります。VBA超初心者です。 エクセルでワークシート 2 2023/06/28 21:00
- Excel(エクセル) EXCEL マクロで行を挿入して貼り付けようとするとエラーになる。 2 2022/05/24 09:43
- Visual Basic(VBA) シフト表のコマで「ブロック」されている前の時間の「出」を同一列の「休」と入れ替えたいがふぇきません。 2 2023/08/02 18:49
- Excel(エクセル) マクロで行を追加、削除すると行位置がずれますが、解決方法はありませんか?。 5 2022/05/28 16:03
- Visual Basic(VBA) VBAが止まります。 3 2022/08/31 14:09
- Visual Basic(VBA) エクセルVBAについて 8 2022/07/13 22:41
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PHPで連想配列のプルダウンメニ...
-
マッチング処理(1:N)
-
VB.NET で 二次元のハッシュは...
-
スカラーのベクトル微分
-
PHPでの簡易ビンゴゲームでの疑...
-
PHPでテキストファイルの一部を...
-
別ファイルの構造体の値を読み...
-
配列を分解したいのですが
-
バイナリファイルの内容を、そ...
-
C言語で全角文字の扱いについて
-
verilogで、配列の一部をタスク...
-
ヒアドキュメントの中のfor文
-
配列をループでたくさん宣言し...
-
複数行のデータのPOST処理に関して
-
配列を回すとき、最後の要素だ...
-
String だと「 ByRef引数の型が...
-
配列一致(要素順番は違うが内容...
-
phpで、連想配列を普通の配列に...
-
OCI で、SELECT結果行数を取得...
-
MYSQLとPHPによって取得する多...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
foreachで上限回数指定方法また...
-
VB.NET で 二次元のハッシュは...
-
PHP、{}記号の意味
-
マッチング処理(1:N)
-
sqlのデーターを『あ行』『か行...
-
3つの連想配列を交互に代入し...
-
smartyのforeachの使い方
-
Smartyでインクリメント
-
Excel VBAでフィルター後の対象...
-
連想配列でキーを利用して一部...
-
ラジオボタンをランダムに表示...
-
ftokが動かない?
-
配列からプルダウン用のHTMLを生成
-
リストボックス複数選択抽出方法
-
関数の引数に配列を初期化なしで。
-
foreachの間にテーブルの<TR>を...
-
smartyでtplファイルでの2次元配列
-
PHPで変数名にハイフンを使うに...
-
PHPでJSONを扱うときに配列の参...
-
PHPで連想配列のプルダウンメニ...
おすすめ情報
うれしいです
うまくできました。
ありがとうございました。
お体大切に