ªð¦^¦Cªí ¤W¤@¥DÃD µo©«

[µo°Ý] ¨D§U°}¦C°ÝÃD

¦^´_ 10# ­ã´£³¡ªL


    ÁÂÁ½׾Â,ÁÂÁ«e½ú
«á¾ÇÂǦ¹©«¾Ç²ß«e½úªº¤è®×,¤è®×¾Ç²ß¤ß±oµù¸Ñ¦p¤U,½Ð«e½ú¦A«ü¾É

¸ê®Æªí:


µ²ªGªí:



Sub TEST_A01()
Dim Arr, xD, i&, j%, N&, T$, U&
'¡ô«Å§iÅܼÆ
Set xD = CreateObject("Scripting.Dictionary")
'¡ô¥OxDÅܼƬO ¦r¨å
Sheets("¤u§@ªí2").UsedRange.EntireRow.Delete
'¡ô¥Oªí2¨Ï¥ÎÀx¦s®æ©Ò¦bªº¦C§R°£
Arr = Range([¤u§@ªí1!I1], [¤u§@ªí1!A1].Cells(Rows.Count, 1).End(xlUp))
'¡ô¥OArrÅܼƬO ¤Gºû°}¦C,¥Hªí1ªºA~IÄæÀx¦s®æ­È±a¤J°}¦C¤¤
For i = 2 To UBound(Arr)
'¡ô³]¶¶°j°é
    T = Arr(i, 2) & "|"
    '¡ô¥OTÅܼƬO²Ä2Äæ°}¦C­È³s±µ"|"²Å¸¹ªº·s¦r¦ê
    If Arr(i, 4) = "²Õ¦X§é¦©" Then T = T & "S"
    '¡ô¦pªG²Ä4Äæ°}¦C­È¬O "²Õ¦X§é¦©"¦r¦ê!´N¥OTÅܼƦA³s±µ"S"¦r¤¸
    For j = 6 To 9:  xD(T & j) = xD(T & j) + Arr(i, j):  Next
    '¡ô³]¶¶°j°é!¥OTÅܼƳs±µj°j°é¼Æªº·s¦r¦ê·íkey,
    '¨äitem­È¦U²Ö¥[jÅܼƷíÄ檺Arr°}¦C­È

Next i
'-----------------------------------
For i = 2 To UBound(Arr)
'¡ô³]¶¶°j°é
    If Arr(i, 4) = "²Õ¦X§é¦©" Then GoTo i01
    '¡ô¦pªG²Ä4Äæ°}¦C­È¬O "²Õ¦X§é¦©"¦r¦ê!´N¤£³B²z«áÄò,¸õ¨ìi01¦ì¸mÄ~Äò°õ¦æ
    T = Arr(i, 2) & "|"
    '¡ô¥OTÅܼƬO²Ä2Äæ°}¦C­È³s±µ"|"²Å¸¹ªº·s¦r¦ê,¥["|"¬O¨¾¸U¤@
    N = N + 1
    '¡ô¥ONÅܼƲ֥[1(²Ö¥[µ²ªG¦C¼Æ,¤@¶}©l´N+1¬O¬°¤FªÅ¥X¼ÐÃDªº¦C)
    For j = 1 To 5: Arr(N + 1, j) = Arr(i, j): Next
    '¡ô³]¶¶°j°é!¥OArr°}¦C±q²Ä¤G¦C¶}©l¼g¤Jµ²ªG­È(1~5Äæ)
    For j = 6 To 9
    '¡ô³]¶¶°j°é
        Arr(N + 1, j) = Arr(i, j) + Arr(i, j) * (xD(T & "S" & j) / xD(T & j))
        '¡ô¥O6~9ÄæArr°}¦C­Èµ²ªG¦C¬O
        '°j°é¦C­ÓÄæ­È+ °j°é¦C­ÓÄæ­È*(²Õ¦X§é¦©Á`ª÷ÃB/«D²Õ¦X§é¦©Á`ª÷ÃB)
        '­pºâ²Õ¦X§é¦©«á¥­§¡»ù®æ(¦]¬°²Õ¦X§é¦©­È¬O­t­È,©Ò¥H¬O¥Î¬Û¥[­pºâ)

    Next j
i01: Next i
'-----------------------------------
[¤u§@ªí2!A1:I1].Resize(N + 1) = Arr
'¡ô¥Oªí2¼g¤JArr°}¦C­È,¶W¹Lµ²ªG­Èªº°}¦C­È©¿²¤
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

ÁÂÁ½׾Â,ÁÂÁ¦U¦ì«e½ú
«á¾ÇÂǦ¹©«¾Ç²ß°}¦C»P¦r¨å,¾Ç²ß¤è®×¦p¤U,½Ð¦U«e½ú«ü±Ð


Option Explicit
Sub TEST()
Dim Brr, Y, R&, i&, j%, T$, K$
Set Y = CreateObject("Scripting.Dictionary")
Sheets("¤u§@ªí2").[A:I].ClearContents
Brr = Range([¤u§@ªí1!I1], [¤u§@ªí1!A65536].End(3))
K = "²Õ¦X§é¦©"
For i = 2 To UBound(Brr)
   T = Brr(i, 4): T = Brr(i, 2) & "|" & IIf(T = K, K, "")
   For j = 6 To 9:  Y(T & j) = Y(T & j) + Brr(i, j):  Next
Next
For i = 2 To UBound(Brr)
   If Brr(i, 4) = K Then GoTo i01
   T = Brr(i, 2) & "|"
   R = R + 1
   For j = 1 To 5: Brr(R + 1, j) = Brr(i, j): Next
   For j = 6 To 9
       Brr(R + 1, j) = Brr(i, j) + Brr(i, j) * (Y(T & K & j) / Y(T & j))
   Next j
i01: Next i
[¤u§@ªí2!A1:I1].Resize(R + 1) = Brr
Set Y = Nothing: Erase Brr
End Sub
¥Î¦æ°Ê¸Ë¸mÂsÄý½×¾Â¾Ç²ß«Ü¤è«K,ÁÂÁ½׾¸gÀç¹Î¶¤
½Ð¤j®a¤@°_¤W½×¾Â¨Ó¥æ¬y

TOP

        ÀR«ä¦Û¦b : µÊ®ð¼L¤Ú¤£¦n¡A¤ß¦a¦A¦n¤]¤£¯àºâ¬O¦n¤H¡C
ªð¦^¦Cªí ¤W¤@¥DÃD