以前頂戴致しましたコードです。
ありがとうございました
質問があります。
下記の解釈まちがっていますでしょぅか。
m = Month(.Cells(i, "A").Value) - 4 '-------------1,2,3,4月だったら -3 -2 -1 0
If (m < 0) Then m = m + 12 '--------
mがm<0だったらなので--1月+12 =13ということは 対象月は1から3月まででよろしいでしょうか
13列目からだけど8列が4月なので違うのです。
おしえてくれませんでしょうか
1月はZ列AA列
--------------------------------------------------------------------------
すみません。なにを質問しているのかわかりませんね。
下記のコードの解釈おしえてくれませんでしょうか
m = Month(.Cells(i, "A").Value) - 4 '-------------1,2,3,4月だったら -3 -2 -1 0
If (m < 0) Then m = m + 12
Option Explicit
Public Sub Samp1()
Const CPC As Long = 1000 ' 最大人数
Dim dic As Object
Dim sA(1 To CPC, 1 To 1) As String
Dim jA(1 To CPC, 1 To 24) As Long ' 件数、金額 x 12 組
Dim vK As Variant
Dim i As Long, j As Long, k As Long, n As Long, m As Long
Set dic = CreateObject("Scripting.Dictionary")
n = 0
With ActiveSheet
For i = 2 To .Cells(Rows.count, "A").End(xlUp).Row
vK = .Cells(i, "D").Value
m = Month(.Cells(i, "A").Value) - 4 '-------------1,2,3,4月だったら -3 -2 -1 0
If (m < 0) Then m = m + 12 '--------mがm<0だったらなので--1+12 =13
j = m * 2 + 1 '
k = dic(vK)
If (k = 0) Then
n = n + 1
k = n
dic(vK) = k
sA(k, 1) = vK
End If
jA(k, j) = jA(k, j) + 1
jA(k, j + 1) = jA(k, j + 1) + .Cells(i, "E").Value
Next
If (n > 0) Then
Application.ScreenUpdating = False
With .Range("G3").Resize(n, 25)
.Columns(1).Value = sA
.Columns(2).Resize(, 24).Value = jA
.Sort .Cells(1), xlAscending, Header:=xlNo
End With
Application.ScreenUpdating = True
End If
End With
Set dic = Nothing
End Sub
No.1ベストアンサー
- 回答日時:
まず。
・表題の『Dictionaryオブジェクト』はこの質問とは関係ないです。
・『以前頂戴した回答』と言う場合、質問者さんの質問履歴を非公開にされているのなら少なくともその時の質問のリンクを貼って頂けると回答する側がわかりやすい時もあります。
今回のはたまたま15年も前には既に使われてた方法なので構わないですけどね。
>If (m < 0) Then m = m + 12 '--------mがm<0だったらなので--1+12 =13
m<0が成立する場合、それは m が -3,-2,-1 の時ですから +12 をすれば 9,10,11 になりますよ?
ここを勘違い(?)されると後が混乱します。(多分)
この回答自体は1月開始ではなく『4月~翌年3月』に対応したものであるためですね。
インデックスの最小値を共に『1』とする変数:Dim jA(1 To CPC, 1 To 24) As Long ' 件数、金額 x 12 組 に代入するため画像のように補正を進めたのでしょう。
いつも有難うございます。
以前頂戴した回答』と言う場合、質問者さんの質問履歴を非公開にされているのなら
>かしこまりました。
インデックスの最小値を共に『1』とする変数:
Dim jA(1 To CPC, 1 To 24) As Long ' 件数、金額 x 12 組 に代入するため
>JAに代入 わたし勘違いしてました。 わかりました。
とんでもない勘違いしてました。
勉強になりました。
No.2
- 回答日時:
No.1です。
コードで気になる点は、
>k = dic(vK)
ここですかね。
本来Dictionaryオブジェクトに登録されているキーに対してのアイテムを与えるならわかるのですが、キー・アイテムを登録する前に実行されてしまう点です。
こう言う使い方は今まで諸先輩方の回答でも見てきた事がないので不思議でしたね。
Dictionaryクラスならエラーになるのでステップアップされるつもりか否かで参考とすべきかは考えるべきかも。
いつも有難うございます。
>k = dic(vK)
かしこまりました。
めぐみん様の方法でやりますのでこのコードは
こういうやり方もあるのだなということで
おわりにします。
ありがとうございました
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) VBAの指示の内容 昨日こちらでご教示頂いたのですが初心者な為、一つ一つの指示が何をやっているのかわ 2 2022/10/25 18:08
- Visual Basic(VBA) VBA処理追加 こちらでご教示頂いたのですが回答完了させてしまいましたのでこちらからまた質問させてく 2 2022/10/27 09:57
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Visual Basic(VBA) VBA 別ブックからの転記の高速化について VBA 別ブックからの転記の高速化についてご教授下さい。 19 2022/07/26 13:07
- Visual Basic(VBA) 稀に1円合いません? Sheet1から金額と個数を貼り付ける下記コードで、金額を切り上げるコードを何 3 2022/09/05 15:11
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Visual Basic(VBA) vbaを早くしたい 5 2022/09/09 10:58
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
ACCESSのFieldの追加方法
-
python __del__()に関して
-
UserForm1.Showでエラーになり...
-
実行時エラー 3265「要求された...
-
パワーポイント filedialogでフ...
-
ドロップダウンリストの行を増...
-
VBA オブジェクトが空かどうか...
-
オブジェクト変数またはWITHブ...
-
テキストボックス中の文字列の...
-
VBScriptでCSVファイルのデータ...
-
VBS 指定のフォルダ内の最新の...
-
エクセルVBAでテキストボックス...
-
textBox isNot Nothing とは
-
PowerPointVBAでスライドマスタ...
-
VBScriptでファイルの日時順(降...
-
VBAによるコメントの余白設定
-
VBA プロパティについて
-
VBでPDFファイルを編集する
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
実行時エラー 3265「要求された...
-
エクセルのVBAの標準モジュール...
-
VBAで既に開いている別アプリケ...
-
VBAで Set wb = Sheets(1).Cop...
-
テキストボックス中の文字列の...
-
PowerPointVBAでスライドマスタ...
-
エクセルマクロエラー「'Cells'...
-
VBAからPDFファイルにパスワー...
-
Excelでフィルタをかけると警告...
-
オブジェクトが見つかりません
-
ある文字列が全て数字であるか...
-
EXCEL VBA オートシェイプナン...
-
[VBA]CDOメッセージ送信エラー
-
VBAで作成するメール(開封確認...
-
VBAについてです。 初心者です...
-
VBA:オートシェイプの線の長...
-
VBで引数にDictionaryオブジェ...
-
AccessVBAで「dim dbs as datab...
おすすめ情報
jA(k, j) = jA(k, j) + 1
jA(k, j + 1) = jA(k, j + 1) + .Cells(i, "E").Value
画像とは逆になっています。