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

[µo°Ý] §Q¥ÎÀx¦s®æ¤¤ªº³¡¤ÀÃöÁä¦r¡A¨ú¥X¦P¤@¦Cªº¬ÛÃö¸ê®Æ

[µo°Ý] §Q¥ÎÀx¦s®æ¤¤ªº³¡¤ÀÃöÁä¦r¡A¨ú¥X¦P¤@¦Cªº¬ÛÃö¸ê®Æ

·Q¤F¦n¤[¡AÁÙ¬O¨SÀYºü¡A¼g±o¶Ã¤C¤KÁV¡CªþÀɤ¤¦³¸Ô²Ó»¡©ú¡A¨D¸Ñ!
test.rar (12.86 KB)
Jess

¦^´_ 1# jesscc
  1. Sub Test()
  2.     Dim D As Object, Ky As Variant
  3.     Set D = CreateObject("Scripting.Dictionary")
  4.     With Sheets("DATA")
  5.         For Each Ky In Range(.[B5], .[B5].End(xlDown))
  6.             D(Ky.Value) = Array(Ky.Offset(0, 2), Ky.Offset(0, 4))
  7.             '=> D(Ky.Value) =Array( Ky.Cells(1, 3), Ky.Cells(1, 5))
  8.             '=> D(Ky.Value) = Array(Ky(1, 3), Ky(1, 5))
  9.         Next
  10.     End With
  11.     With Sheets("Sheet2")
  12.         If .Range("E7").End(xlDown).Row = Rows.Count Then Exit Sub
  13.         For Each Ky In .Range(.[E7], .[E7].End(xlDown))
  14.           If D.Exists(Ky.Value) Then
  15.             If D(Ky.Value)(1) Like "*C" Then
  16.                 Ky.Offset(0, 7) = D(Ky.Value)(0)  '=> .Cells(E.Row, "L")= D(Ky.Value)(0)
  17.                 If Ky.Offset(0, 8) = "" Then   'Range("O7:O" & yRow).Formula = "=N7*1000/L7"
  18.                     Ky.Offset(0, 10) = Ky.Offset(0, 9) * 1000 / Ky.Offset(0, 7)
  19.                     '=> .Cells(e.Row, "O")=.Cells(e.Row, "N")*1000/.Cells(e.Row, "L")
  20.                 Else     'Range("O7:O" & yRow).Formula = "=M7*L7"
  21.                     Ky.Offset(0, 10) = Ky.Offset(0, 8) * Ky.Offset(0, 7)
  22.                     '=> .Cells(E.Row, "O") = .Cells(E.Row, "M") * .Cells(E.Row, "L")
  23.                 End If
  24.             End If
  25.           End If
  26.         Next
  27.     End With
  28. End Sub
½Æ»s¥N½X
  1. Sub Ex()
  2.     Dim Ar(), E As Range, W As Variant
  3.     With Sheets("DATA")
  4.         Ar = .Range("B5:F" & .[B4].End(xlDown).Row).Value
  5.     End With
  6.     Ar = Application.WorksheetFunction.Transpose(Ar)
  7.     With Sheets("SHEET2")
  8.         For Each E In .Range("E7", .[E7].End(xlDown))
  9.             W = Application.Match(E, Application.Index(Ar, 1), 0)
  10.             If IsNumeric(W) Then
  11.                 If Application.Index(Ar, 5)(W) Like "*C" Then
  12.                     .Cells(E.Row, "L") = Application.Index(Ar, 3)(W)
  13.                     If .Cells(E.Row, "M") = "" Then     'Range("O7:O" & yRow).Formula = "=N7*1000/L7"
  14.                         .Cells(E.Row, "O") = .Cells(E.Row, "N") * 1000 / .Cells(E.Row, "L")
  15.                     Else                                 'Range("O7:O" & yRow).Formula = "=M7*L7"
  16.                         .Cells(E.Row, "O") = .Cells(E.Row, "M") * .Cells(E.Row, "L")
  17.                     End If
  18.                 End If
  19.             End If
  20.         Next
  21.     End With
  22. End Sub
½Æ»s¥N½X
  1. Sub Ex1()
  2.     Dim Ar(), Ay(), i As Integer, W As Variant
  3.     With Sheets("DATA")
  4.         Ar = .Range("B5:F" & .[B4].End(xlDown).Row).Value
  5.     End With
  6.     Ar = Application.WorksheetFunction.Transpose(Ar)
  7.     With Sheets("SHEET2")
  8.         Ay = .Range("E7:O" & .[E7].End(xlDown).Row).Value
  9.         For i = 1 To UBound(Ay)
  10.             W = Application.Match(Ay(i, 1), Application.Index(Ar, 1), 0)
  11.             If IsNumeric(W) Then
  12.                 If Application.Index(Ar, 5)(W) Like "*C" Then
  13.                     Ay(i, 8) = Application.Index(Ar, 3)(W)
  14.                     If Ay(i, 9) = "" Then   'Range("O7:O" & yRow).Formula = "=N7*1000/L7"
  15.                         Ay(i, 11) = Ay(i, 10) * 1000 / Ay(i, 8)
  16.                     Else                    'Range("O7:O" & yRow).Formula = "=M7*L7"
  17.                         Ay(i, 11) = Ay(i, 9) * Ay(i, 8)
  18.                 End If
  19.                 End If
  20.             End If
  21.         Next
  22.          .Range("E7:O" & .[E7].End(xlDown).Row) = Ay
  23.     End With
  24. End Sub
½Æ»s¥N½X

TOP

¦^´_ 2# GBKEE


    ÁÂÁÂG¤j¤@¦¸±Ð§Ú¤TºØ§@ªk¡A²Ä¤@ºØ§@ªk§Ú¤ñ¸û¯à¬Ý±oÀ´¡C¨ä¤¤ªº²Ä¤Q¤K¦æ¡A¦pªG°£¼Æ¬°0ªº®É­Ô¡Aµ{¦¡·|¥X²{°£¿ù¡A­n¦p¦óÁקK³oºØ±¡§Î? ÁÙ¦³§Ú­n¥ÎRounddown±N­pºâµ²ªGµL±ø¥ó¨ú¦Ü¾ã¼Æ¡A¸Ó¦p¦ó®M¥Î?
Jess

TOP

¦^´_ 3# jesscc

  1. If Ky.Offset(0, 8) = "" And Ky.Offset(0, 9) <> "" Then
  2.            Ky.Offset(0, 10) = Int(Ky.Offset(0, 9) * 1000 / Ky.Offset(0, 7))
  3. ElseIf Ky.Offset(0, 8) <> "" Then     
  4.           Ky.Offset(0, 10) = Int(Ky.Offset(0, 8) * Ky.Offset(0, 7))
  5. End If
½Æ»s¥N½X

TOP

¦^´_ 4# GBKEE
¤F¸Ñ
Round¡BRoundUp¡BRounddown ³o¨Ç¨ç¼Æ¥u¯à¥Î¦b¤½¦¡ùضÜ?
Jess

TOP

¦^´_ 5# jesscc
VBA´£¨Ñ¤@¨Ç¤u§@ªí¨ç¼Æ¥i¥Î.
§ä¥X¥i¥Îªº¤u§@ªí¨ç¼Æ :   Application.WorksheetFunction.     ->  .  ¤§«á¤U¥i¿ï¾Ü
PS: VBA«ü¥O  ¤u¨ã->¿ï¶µ-> ¤Ä¿ï: ¦Û°Ê¦C¥X¦¨­û

TOP

¥»©«³Ì«á¥Ñ jesscc ©ó 2011-9-17 17:43 ½s¿è

¦^´_ 6# GBKEE


    ³o¤@ÂI§Úª¾¹D
§ÚªººÃ°Ý¬O¦pªG§Ú­n¥|±Ë¤­¤J¦Ó¤£¬O¨ú¾ã¼Æ¡A¥ÎRound¨ç¼Æ¡Aµ{¦¡¤£²z§Ú¡A¨º§Ú¸Ó¥Î¤°»ò¨ç¼Æ?
ÁÙ¦³¤@ÂI
  1. Range("O:O") = ""
  2. Dim yRow&
  3. yRow = [E65536].End(xlUp).Row
  4. If yRow < 7 Then Exit Sub
  5. If Range("M7:M" & yRow) = "" And Range("N7:N" & yRow) <> "" And Range("L7:L" & yRow) <> "" Then
  6. Range("O7:O" & yRow).Formula = "=Rounddown(N7*1000/L7,0)"
  7. Else
  8. Range("O7:O" & yRow).Formula = "=M7*L7"
  9. End If
  10. Range("O7:O500").Value = Range("O7:O500").Value
½Æ»s¥N½X
¥N½X¤¤ªº²Ä¤­¦æ¡A¤@ª½¥X²{°£¿ù"«¬ºA¤£²Å¦X"¡AAnd¤£¯à³o¼Ë³s±µ¶Ü?
Jess

TOP

¦^´_ 7# jesscc
¨S¦³¤£²z§A ¬O»yªk¿ù»~
If Range("M7:M" & yRow) = "" And Range("N7:N" & yRow) <> "" And Range("L7:L" & yRow) <> "" Then
Range("M7:M" & yRow) = ""    ->³o½d³ò¤¤¨S¸ê®Æ    ¬O¶Ü?      Application.CountA(Range("M7:M" & yRow)) = 0
Range("N7:N" & yRow) <> "" -> ³o½d³ò¤¤¦³¸ê®Æ    ¬O¶Ü?       Application.CountA(Range("N7:N" & yRow)) > 0

¤u§@ªí¨ç¼Æ :   CountA   ­pºâ¤£¬OªÅ¥ÕªºÀx¦s®æ¼Æ¶q , ¥H¤Î¤Þ¼Æ²M³æ¤¤ªº¼Æ­È
If Application.CountA(Range("M7:M" & yRow)) = 0 And Application.CountA(Range("N7:N" & yRow)) > 0 And Application.CountA(Range("L7:L" & yRow)) > 0 Then

TOP

¦^´_  jesscc
¨S¦³¤£²z§A ¬O»yªk¿ù»~
If Range("M7:M" & yRow) = "" And Range("N7:N" & yRow)  "" And  ...
GBKEE µoªí©ó 2011-9-17 18:59



    G¤j¡A©êºp§Ú¶K¿ù¤F¡AÀ³¸Ó¬O«ü¦P¤@¦Cªº¸ê®Æ¡A¦Ó¤£¬O­pºâ©Ò¦³ªÅ¥ÕÀx¦s®æ
If Range("M7:M" & yRow) = "" And Range("M7:M" & yRow).Office(,1) <> "" And Range("M7:M" & yRow).Office(,-1) <> "" Then
Range("O7:O" & yRow).Formula = "=Rounddown(N7*1000/L7,0)"
Else
Range("O7:O" & yRow).Formula = "=M7*L7"
End If
¹³¤W­±³o¼Ë¡A»yªk¤£ª¾¿ù¦b­þ¸Ì?
Jess

TOP

¦^´_ 9# jesscc
If Range("M7:M" & yRow) = "" And Range("M7:M" & yRow).Office(,1) <> "" And Range("M7:M" & yRow).Office(,-1) <> "" Then

À³¸Ó¬O«ü¦P¤@¦Cªº¸ê®Æ¡A¦Ó¤£¬O­pºâ©Ò¦³ªÅ¥ÕÀx¦s®æ    :   ¨S¬Ý¨ì¦P¤@¦C ªºÅܼƠ 
If Range("M"&¦P¤@¦C) = "" And Range("M" &¦P¤@¦C).Office(,1) <> "" And Range("M" &¦P¤@¦C).Office(,-1) <> "" Then

TOP

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