Board logo

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

§@ªÌ: jesscc    ®É¶¡: 2011-9-17 00:09     ¼ÐÃD: §Q¥ÎÀx¦s®æ¤¤ªº³¡¤ÀÃöÁä¦r¡A¨ú¥X¦P¤@¦Cªº¬ÛÃö¸ê®Æ

·Q¤F¦n¤[¡AÁÙ¬O¨SÀYºü¡A¼g±o¶Ã¤C¤KÁV¡CªþÀɤ¤¦³¸Ô²Ó»¡©ú¡A¨D¸Ñ!
[attach]7858[/attach]
§@ªÌ: GBKEE    ®É¶¡: 2011-9-17 11:20

¦^´_ 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

§@ªÌ: jesscc    ®É¶¡: 2011-9-17 12:53

¦^´_ 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¥Î?
§@ªÌ: GBKEE    ®É¶¡: 2011-9-17 13:20

¦^´_ 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

§@ªÌ: jesscc    ®É¶¡: 2011-9-17 13:46

¦^´_ 4# GBKEE
¤F¸Ñ
Round¡BRoundUp¡BRounddown ³o¨Ç¨ç¼Æ¥u¯à¥Î¦b¤½¦¡ùضÜ?
§@ªÌ: GBKEE    ®É¶¡: 2011-9-17 15:27

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

¥»©«³Ì«á¥Ñ 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±µ¶Ü?
§@ªÌ: GBKEE    ®É¶¡: 2011-9-17 18:59

¦^´_ 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
§@ªÌ: jesscc    ®É¶¡: 2011-9-17 19:19

¦^´_  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­þ¸Ì?
§@ªÌ: GBKEE    ®É¶¡: 2011-9-17 19:28

¦^´_ 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
§@ªÌ: jesscc    ®É¶¡: 2011-9-17 20:23

¦^´_ 10# GBKEE


    ªþ¤W­×§ï«áªºÀɮסA½ÐG¤j¾Þ§@¤@¤U´Nª¾¹D¤F
[attach]7861[/attach]
§@ªÌ: GBKEE    ®É¶¡: 2011-9-17 21:11

¦^´_ 11# jesscc
¥Î R1C1 ªí¥Üªk
  1. Sub Test1()
  2.     Dim KY As Range
  3.     With Sheets("Sheet2")
  4.         If .Range("E7").End(xlDown).Row = Rows.Count Then Exit Sub
  5.             For Each KY In .Range(.[E7], .[E7].End(xlDown)).Offset(, 8)  'MÄæ
  6.                 If KY = "" And KY.Offset(, 1) <> "" And KY.Offset(, -1) <> "" Then
  7.                     KY.Offset(, 2) = "=Rounddown(RC[-1]*1000/RC[-3],0)"
  8.                 Else
  9.                     KY.Offset(, 2) = "=RC[-2]*1000/RC[-3]"
  10.                 End If
  11.                     KY.Offset(, 2) = KY.Offset(, 2).Value
  12.             Next
  13.     End With
  14. End Sub
½Æ»s¥N½X

§@ªÌ: jesscc    ®É¶¡: 2011-9-17 22:01

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

¦^´_ 12# GBKEE


    §Úªº°ÝÃD´N¦b³o¸Ì
·d¤£À´¬°¤°»ò¥Î¤@­Óª«¥óÅܼƨӨú¥NRange¡A¾ã­Ó§PÂ_¦¡´N¥i¥H¥Î¦h­ÓAnd ³s±µ?

ÁÙ¦³«e­±¨º­Ó²Ä18¦æªº°ÝÃD
¬°¤°»ò³o¼Ë¥i¥H
Ky.Offset(0, 10) = Int(Ky.Offset(0, 9) * 1000 / Ky.Offset(0, 7))

³o¼Ë´N¤£¦æ
Ky.Offset(0, 10) = Rounddown((Ky.Offset(0, 9) * 1000 / Ky.Offset(0, 7)),0)

¦pªG¬O­n¥|±Ë¤­¤J¡A³o¬q¤£ª¾¸Ó¥Î¤°»ò¨ç¼Æ?
§@ªÌ: Hsieh    ®É¶¡: 2011-9-17 22:55

¥»©«³Ì«á¥Ñ Hsieh ©ó 2011-9-17 23:07 ½s¿è

¦^´_ 13# jesscc

Rounddown¬O¤u§@ªí¨ç¼Æ
Ky.Offset(0, 10) = Application.Rounddown((Ky.Offset(0, 9) * 1000 / Ky.Offset(0, 7)),0)
§@ªÌ: jesscc    ®É¶¡: 2011-9-17 23:30

¦^´_ 14# Hsieh

1.²Ä¤@­Ó°ÝÃDÁÙ¬O·d¤£À´><
2.©Ò¦³ªº¤u§@ªí¨ç¼Æ¡A¹B¥Î¨ìVBAùس£¬O³oºØÂà´«¤è¦¡¶Ü?
§@ªÌ: oobird    ®É¶¡: 2011-9-18 00:03

¥i¥H©ì°Ê³o­Ó¤U©Ô²M³æ¡A¬d¬ÝVBA¤ä´©ªº¤u§@ªí¨ç¼Æ
[attach]7863[/attach]
§@ªÌ: jesscc    ®É¶¡: 2011-9-18 00:18

¤F¸Ñ¤F¡C
ÁÂÁ H¤j©M O¤jªºÀ°¦£¡C§ó­nÁÂÁÂG¤j¡A´X¥G³­¤F§Ú¤@¤U¤Èªº®É¶¡À°§Ú¸Ñ¨M°ÝÃD¡A¯uªº«D±`·PÁÂ!
¥t¥~¡A²Ä¤@­Ó°ÝÃD§Ú·|¦AÄ~Äò§V¤O§äµª®×ªº¡C




Åwªï¥úÁ{ ³Â»¶®a±Ú°Q½×ª©ª© (http://forum.twbts.com/)