advanced help
per page, with , order by , clip by
Results of 1 - 1 of about 48855 for A�����������������������... (0.009 sec.)
[[20190704151348]]
#score: 1420
@digest: 156075c870f688ceefe36b7e6403263d
@id: 80093
@mdate: 2019-07-05T07:40:05Z
@size: 12763
@type: text/plain
#keywords: getbyindex (46086), 該番 (44705), vread (34812), vwrite (34812), 白, (32341), 和20 (30292), 付": (19771), c2hwm (19771), 額品 (17700), 額日 (15957), (令 (14331), sortedlist (10184), 号品 (8562), 令和 (8246), 額" (7920), collections (7587), 行増 (7330), maxrow (6817), 付, (6279), 月12 (5883), contains (5809), 計) (4969), 月19 (4862), 月13 (4261), 月16 (4216), system (3970), 当該 (3893), バナ (3180), ナナ (3045), 月d (2922), 金額 (2909), 号, (2743)
『集計をマクロでやりたい』(令和20)
[[20190528114100]] 『集計をマクロでやりたい』(令和20) 2019年05月28日(火) 上記のように、以前質問致しまして、下記のようにご回答頂いたものです。 順調に処理を重ねて来ましたが、項目欄(日付・当該番号・品名・・・・・・) の行とデータとの間に、集計などの行を改めて設けます。 すると、「実行時エラー"13" 型が一致しません」と出てしまいます。 どのように修正したらよいのか、お教え下さいませんか。 なお、以前(隠居じーさん)・ (白茶)のお二人には大変お世話になりありがとうございました。 A B C D E F G H I J K L M N O P Q R S T U 1 日付 当該番号 品名 金額品名 番号 品名 日付 1りんご金額 日付 2ぶどう金額 日付 3バナナ金額 日付 4みかん金額 2 3月12日 2 ぶどう 100 1 りんご 4月16日 300 3月12日 100 5月13日 500 5月12日 400 3 4月16日 1 りんご 200 2 ぶどう 4月19日 200 4 4月19日 1 りんご 300 3 バナナ 5 5月12日 4 みかん 400 4 みかん 6 5月13日 3 バナナ 500 回答ではありません。^^; 整理のお手伝いです。 B1〜J6の情報を基にN列〜U列。。(。商品数分(40)増える) の様な表を作成すればよいのでしょうか。 i〜J(商品マスタ)も作る?作らなくても良い? とかが解ると多数回答があるかもしれませんね。 上記の図も想像図ですので、違えてましたら修正後 さらなるご説明をされるといいと思います。 私が作りますっていう意味では有りません。^^;;; 気が付いた点だけですみません。m(_ _)m (隠居じーさん) 2019/05/28(火) 15:39 Sub test() Dim DT As Range, vRead() As Variant, r As Long, vWrite() As Variant Dim List As Range, c As Long, d As Date, r2 As Long Dim r2HWM As Long, c2HWM As Long Set List = [I2:J41] c2HWM = List.Rows.Count * 2 Set DT = Intersect([B:F], [D1].CurrentRegion.EntireRow) With Workbooks.Add DT.Copy .ActiveSheet.Cells(1, 1) With .ActiveSheet.Sort .SortFields.Add Key:=Range("C1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SortFields.Add Key:=Range("A1"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal .SetRange .Parent.UsedRange .Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply vRead = .Rng.Value End With .Close False End With ReDim vWrite(1 To UBound(vRead), 1 To c2HWM) For c = 2 To c2HWM Step 2 vWrite(1, c - 1) = "日付" vWrite(1, c) = List(c / 2, 1) & List(c / 2, 2) & "金額" Next For r = 2 To UBound(vRead) If vRead(r, 3) <> c Then c = WorksheetFunction.Match(vRead(r, 3), List.Columns(1), 0) If r2 > r2HWM Then r2HWM = r2 r2 = 1 End If If CDate(vRead(r, 1)) <> d Then d = CDate(vRead(r, 1)) r2 = r2 + 1 vWrite(r2, c * 2 - 1) = d End If vWrite(r2, c * 2) = vWrite(r2, c * 2) + vRead(r, 5) Next [N1].Resize(r2HWM, c2HWM) = vWrite End Sub (白茶) 2019/05/28(火) 16:48 < 使用 Excel:Excel2013、使用 OS:Windows10 > ---- データが B-E列、結果を N列から。 結果は、横軸は当該番号、縦軸は日付でどちらも昇順。 ということで Sub test() Dim a, i As Long, ii As Long, t As Long, maxRow As Long a = Range("b2", Range("b" & Rows.Count).End(xlUp)).Resize(, 6).Value With CreateObject("System.Collections.SortedList") For i = 1 To UBound(a, 1) If Not .Contains(a(i, 2)) Then .Item(a(i, 2)) = Array(a(i, 2) & a(i, 3), _ CreateObject("System.Collections.SortedList")) End If .Item(a(i, 2))(1)(a(i, 1)) = .Item(a(i, 2))(1)(a(i, 1)) + a(i, 4) Next ReDim a(1 To UBound(a, 1), 1 To .Count * 2) For i = 0 To .Count - 1 t = t + 2 a(1, t - 1) = "日付": a(1, t) = .GetByIndex(i)(0) & "金額" For ii = 0 To .GetByIndex(i)(1).Count - 1 a(ii + 2, t - 1) = .GetByIndex(i)(1).GetKey(ii) a(ii + 2, t) = .GetByIndex(i)(1).GetByIndex(ii) Next maxRow = Application.Max(maxRow, ii + 2) Next End With With [n1].Resize(maxRow, UBound(a, 2)) .CurrentRegion.ClearContents .Value = a For ii = 1 To .Columns.Count Step 2 .Columns(ii).NumberFormat = "m月d日" Next .Columns.AutoFit End With End Sub (seiya) 2019/07/04(木) 16:58 ---- (seiya)さん、ありがとうございましす。 このマクロで実行したのですが、エラーが出てしまいます。 「実行時エラー"13" 型が一致しません」のようにエラーが出ます。 下記のところが、黄色のエラーがでます。 お教え頂けませんでしょうか。よろしくお願い致します。 .Item(a(i, 2))(1)(a(i, 1)) = .Item(a(i, 2))(1)(a(i, 1)) + a(i, 4) 行を増やした表です。 A B C D E F G H I J K L M N O P Q R S T U 1 日付 当該番号 品名 金額品名 番号 品名 日付 1りんご金額 日付 2ぶどう金額 日付 3バナナ金額 日付 4みかん金額 2 合計 1500 合計 500 合計 100 合計 500 合計 400 3 3月12日 2 ぶどう 100 1 りんご 4月16日 300 3月12日 100 5月13日 500 5月12日 400 4 4月16日 1 りんご 200 2 ぶどう 4月19日 200 5 4月19日 1 りんご 300 3 バナナ 6 5月12日 4 みかん 400 4 みかん 7 5月13日 3 バナナ 500 (令和20) 2019/07/05(金) 09:20 ---- >行とデータとの間に、集計などの行を改めて設けます。 この辺が分かりずらかったのですが、それでも動いているんですがね... まだどこか違うのかもしれませんが、とりあえず下記で試してください。 Sub test() Dim a, i As Long, ii As Long, t As Long, maxRow As Long a = Range("b2", Range("b" & Rows.Count).End(xlUp)).Resize(, 4).Value With CreateObject("System.Collections.SortedList") For i = 3 To UBound(a, 1) If Not .Contains(a(i, 2)) Then .Item(a(i, 2)) = Array(a(i, 2) & a(i, 3), _ CreateObject("System.Collections.SortedList")) End If .Item(a(i, 2))(1)(a(i, 1)) = .Item(a(i, 2))(1)(a(i, 1)) + a(i, 4) Next ReDim a(1 To UBound(a, 1), 1 To .Count * 2) For i = 0 To .Count - 1 t = t + 2 a(1, t - 1) = "日付": a(1, t) = .GetByIndex(i)(0) & "金額" a(2, t - 1) = "合計" For ii = 0 To .GetByIndex(i)(1).Count - 1 a(ii + 3, t - 1) = .GetByIndex(i)(1).GetKey(ii) a(ii + 3, t) = .GetByIndex(i)(1).GetByIndex(ii) a(2, t) = a(2, t) + .GetByIndex(i)(1).GetByIndex(ii) Next maxRow = Application.Max(maxRow, ii + 2) Next End With With [n1].Resize(maxRow, UBound(a, 2)) .CurrentRegion.ClearContents .Value = a For ii = 1 To .Columns.Count Step 2 .Columns(ii).NumberFormat = "m月d日" Next .Columns.AutoFit End With End Sub (seiya) 2019/07/05(金) 09:57 ---- >行とデータとの間に、集計などの行を改めて設けます。 すみません、理解しがたい表現ですね。改めて自分で読んでもおかしいと思いました。 これは、 >行を増やした表です。で示したとおり、2行目に1行増やすことを意味しています。 また、合計の所はsum関数で合計します。 1行増やさない状態のデータで、このひとつ前のマクロを実行するとうまくいきます。 しかし、1行増やした状態で、最新のマクロを実行すると、「実行時エラー -2147467261(800004003)」 キーをNullにすることができません。 パラメータ名:Key と出て実行できないのですが、どうでしようか。面倒をおかけしますが、お教え下さいませんでしようか。よろしくお願い致します。 (令和20) 2019/07/05(金) 12:35 ---- 確認ですが 列はB:E, B1 = 日付, C1 = 当該番号, D1 = 品名, E1 = 金額品名 B2 = 空白, C2 = 空白, D2 = 合計, E2 = 1500 (合計) データは3行目から からではないのですか? (seiya) 2019/07/05(金) 12:51 ---- 解りにくい作表で、すみません。多分。。。C列は全て空かと。。。 ご本人に聞かないと真実は解りませんが。。。m(_ _)m (隠居じーさん) 2019/07/05(金) 12:55 ---- (隠居じーさん)さん、ありがとうございます。 もしそうなら、これで Sub test() Dim a, i As Long, ii As Long, t As Long, maxRow As Long a = Range("b3", Range("b" & Rows.Count).End(xlUp)).Resize(, 5).Value With CreateObject("System.Collections.SortedList") For i = 1 To UBound(a, 1) If a(i, 3) <> "" Then If Not .Contains(a(i, 3)) Then .Item(a(i, 3)) = Array(a(i, 3) & a(i, 4), _ CreateObject("System.Collections.SortedList")) End If .Item(a(i, 3))(1)(a(i, 1)) = .Item(a(i, 3))(1)(a(i, 1)) + a(i, 5) End If Next ReDim a(1 To UBound(a, 1), 1 To .Count * 2) For i = 0 To .Count - 1 t = t + 2 a(1, t - 1) = "日付": a(1, t) = .GetByIndex(i)(0) & "金額" a(2, t - 1) = "合計" For ii = 0 To .GetByIndex(i)(1).Count - 1 a(ii + 3, t - 1) = .GetByIndex(i)(1).GetKey(ii) a(ii + 3, t) = .GetByIndex(i)(1).GetByIndex(ii) a(2, t) = a(2, t) + .GetByIndex(i)(1).GetByIndex(ii) Next maxRow = Application.Max(maxRow, ii + 2) Next End With With [n1].Resize(maxRow, UBound(a, 2)) .CurrentRegion.ClearContents .Value = a For ii = 1 To .Columns.Count Step 2 .Columns(ii).NumberFormat = "m月d日" Next .Columns.AutoFit End With End Sub (seiya) 2019/07/05(金) 13:25 ---- 大変、わかりずらい表になりました。すいませんでした。 C・G・H・K・L・M列は空白にしている理由は 公開では少しまずいので、空白にしています。 マクロに関わるデータではないと思いましたので そのようにさせて頂いています。 >確認ですが >列はB:E, B1 = 日付, C1 = 当該番号, D1 = 品名, E1 = 金額品名 > B2 = 空白, C2 = 空白, D2 = 合計, E2 = 1500 (合計) 正しくは下記の通りです。 列はB:F, B1 = 日付, C1 = 空白, D1 = 当該番号, E1 = 品名 F1 = 金額品名 B2 = 空白, C2 = 空白, D2 = 空白, E2 = 合計 F1 = 1500 (合計) >データは3行目から データは3行目からです。 2行目は、合計などのためのsum関数などが入る行です。 (令和20) 2019/07/05(金) 16:18 ---- (seiya) 2019/07/05(金) 13:25。seiyaさんこれでできました。 合計までできるようにして下さっていたとは感激です。凄いです。 誠に、ありがとうございました。 詳しく、やってはいませんが、私の思うようなことをして頂いたと思います。 今度も、驚かされました。ご協力に感謝・感謝です。重ねてお礼を申し上げま す。 (隠居じーさん)さん、へのお礼も忘れるところでした。ありがとうございまし た。 (令和20) 2019/07/05(金) 16:40 ...
https://www.excel.studio-kazu.jp/wiki/kazuwiki/201907/20190704151348.txt - [detail] - similar
PREV NEXT
Powered by Hyper Estraier 1.4.13, with 97054 documents and 608269 words.

訪問者:カウンタValid HTML 4.01 Transitional