Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Altri Linguaggi - Trasformare u codice vba in formula excel 2003
Forum - Altri Linguaggi - Trasformare u codice vba in formula excel 2003

Avatar
trittico69 (Normal User)
Pro


Messaggi: 144
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 13:10
Lunedì, 16/05/2011
È possibile trasformare questo codice in una semplice formula

Codice sorgente - presumibilmente VB.NET

  1. Sub minuti()
  2. Dim AG As Range
  3. Dim AH As Range
  4. Dim AI As Range
  5. Dim F As Range
  6. Dim G As Range
  7. Dim H As Range
  8. Dim vero As Boolean
  9.  
  10. Set AG = ThisWorkbook.ActiveSheet.Range("AG31")
  11. Set AH = ThisWorkbook.ActiveSheet.Range("AH31")
  12. Set AI = ThisWorkbook.ActiveSheet.Range("AI31")
  13. Set F = ThisWorkbook.ActiveSheet.Range("F10")
  14. Set G = ThisWorkbook.ActiveSheet.Range("G10")
  15. Set H = ThisWorkbook.ActiveSheet.Range("H10")
  16.  
  17. vero = False
  18. If ActiveSheet.Name = "RIEP" Then vero = True
  19. If Not vero Then
  20.  
  21. Select Case True
  22.  
  23. '1° CASO AGGIUNTO
  24. 'TUTTE E 3 LE CELLE MINORI O UGUALI A 30
  25. Case VBA.Minute(AG) <= 30 And VBA.Minute(AH) <= 30 And VBA.Minute(AI) <= 30
  26.    Application.EnableEvents = False
  27.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  28.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  29.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  30. '--------------------------------------------------------------------------------
  31. '2° CASO AGGIUNTO
  32. '1 CELLA su 3 MINORE O UGUALE A 30 (le altre 2 uguali a 0)
  33. Case VBA.Minute(AG) <= 30 And VBA.Minute(AH) = 0 And VBA.Minute(AI) = 0
  34.    Application.EnableEvents = False
  35.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  36.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  37.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  38.  
  39. Case VBA.Minute(AG) = 0 And VBA.Minute(AH) <= 30 And VBA.Minute(AI) = 0
  40.    Application.EnableEvents = False
  41.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  42.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  43.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  44.  
  45. Case VBA.Minute(AG) = 0 And VBA.Minute(AH) = 0 And VBA.Minute(AI) <= 30
  46.    Application.EnableEvents = False
  47.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  48.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  49.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  50. '--------------------------------------------------------------------------------------
  51. '3° CASO AGGIUNTO
  52. '2 CELLE SU 3 MINORI O UGUALI A 30 (l'altra uguale a 0)
  53. Case VBA.Minute(AG) <= 30 And VBA.Minute(AH) <= 30 And VBA.Minute(AI) = 0
  54.    Application.EnableEvents = False
  55.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  56.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  57.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  58.  
  59. Case VBA.Minute(AG) <= 30 And VBA.Minute(AH) = 0 And VBA.Minute(AI) <= 30
  60.    Application.EnableEvents = False
  61.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  62.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  63.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  64.  
  65. Case VBA.Minute(AG) = 0 And VBA.Minute(AH) <= 30 And VBA.Minute(AI) <= 30
  66.    Application.EnableEvents = False
  67.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  68.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  69.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  70. '------------------------------------------------------------------------------------------
  71.  
  72. 'PRIMO CASO
  73. Case VBA.Minute(AG) > 30 And VBA.Minute(AH) = 0 And VBA.Minute(AI) = 0
  74.    Application.EnableEvents = False
  75.    If AG > 1 Then F = VBA.Int((AG) * 24) + 1 Else F = VBA.Hour(AG) + 1
  76.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  77.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  78.  
  79. Case VBA.Minute(AG) = 0 And VBA.Minute(AH) > 30 And VBA.Minute(AI) = 0
  80.    Application.EnableEvents = False
  81.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  82.    If AH > 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
  83.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  84.  
  85. Case VBA.Minute(AG) = 0 And VBA.Minute(AH) = 0 And VBA.Minute(AI) > 30
  86.    Application.EnableEvents = False
  87.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  88.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  89.    If AI > 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
  90. '---------------------------------------------------------------------------------
  91.  
  92. 'SECONDO CASO
  93. Case VBA.Minute(AG) > 0 And VBA.Minute(AH) > 0 And VBA.Minute(AI) = 0 _
  94.    And VBA.Minute(AG) + VBA.Minute(AH) > 30 And VBA.Minute(AG) _
  95.    + VBA.Minute(AH) <= 60
  96.    Application.EnableEvents = False
  97.    If AG > 1 Then F = VBA.Int((AG) * 24) + 1 Else F = VBA.Hour(AG) + 1
  98.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  99.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  100.    
  101. Case VBA.Minute(AG) > 0 And VBA.Minute(AH) > 0 And VBA.Minute(AI) = 0 _
  102.    And VBA.Minute(AG) + VBA.Minute(AH) > 60
  103.    Application.EnableEvents = False
  104.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  105.    If AH > 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
  106.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  107. '----------------------------------------------------------------------------------
  108.  
  109. 'TERZO CASO
  110. Case VBA.Minute(AG) > 0 And VBA.Minute(AH) = 0 And VBA.Minute(AI) > 0 _
  111.    And VBA.Minute(AG) + VBA.Minute(AI) > 30 And VBA.Minute(AG) _
  112.    + VBA.Minute(AI) <= 60
  113.    Application.EnableEvents = False
  114.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  115.    If AH > 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
  116.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  117.  
  118. Case VBA.Minute(AG) > 0 And VBA.Minute(AH) = 0 And VBA.Minute(AI) > 0 _
  119.    And VBA.Minute(AG) + VBA.Minute(AI) > 60
  120.    Application.EnableEvents = False
  121.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  122.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  123.    If AI > 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
  124. '-------------------------------------------------------------------------------------
  125.  
  126. 'QUARTO CASO
  127. Case VBA.Minute(AG) = 0 And VBA.Minute(AH) > 0 And VBA.Minute(AI) > 0 _
  128.    And VBA.Minute(AH) + VBA.Minute(AI) > 30 And VBA.Minute(AH) _
  129.    + VBA.Minute(AI) <= 60
  130.    Application.EnableEvents = False
  131.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  132.    If AH > 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
  133.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  134.  
  135. Case VBA.Minute(AG) = 0 And VBA.Minute(AH) > 0 And VBA.Minute(AI) > 0 _
  136.    And VBA.Minute(AH) + VBA.Minute(AI) > 60
  137.    Application.EnableEvents = False
  138.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  139.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  140.    If AI > 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
  141. '-----------------------------------------------------------------------------------------
  142.  
  143. 'OTTAVO CASO
  144. Case VBA.Minute(AG) > 0 And VBA.Minute(AH) > 0 And VBA.Minute(AI) > 0 _
  145.    And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) > 150
  146.    Application.EnableEvents = False
  147.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  148.    If AH > 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
  149.    If AI > 1 Then H = VBA.Int((AI) * 24) + 2 Else H = VBA.Hour(AI) + 2
  150. '------------------------------------------------------------------------------------------
  151.  
  152. 'SETTIMO CASO
  153. Case VBA.Minute(AG) > 0 And VBA.Minute(AH) > 0 And VBA.Minute(AI) > 0 _
  154.    And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) > 120 _
  155.    And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) <= 150
  156.    Application.EnableEvents = False
  157.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  158.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  159.    If AI > 1 Then H = VBA.Int((AI) * 24) + 2 Else H = VBA.Hour(AI) + 2
  160. '--------------------------------------------------------------------------------------------
  161.  
  162. 'SESTO CASO
  163. Case VBA.Minute(AG) > 0 And VBA.Minute(AH) > 0 And VBA.Minute(AI) > 0 _
  164.    And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) > 60 _
  165.    And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) <= 90
  166.    Application.EnableEvents = False
  167.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  168.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  169.    If AI > 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
  170.  
  171. Case VBA.Minute(AG) > 0 And VBA.Minute(AH) > 0 And VBA.Minute(AI) > 0 _
  172.    And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) > 90 _
  173.    And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) <= 120
  174.    Application.EnableEvents = False
  175.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  176.    If AH > 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
  177.    If AI > 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
  178. '-----------------------------------------------------------------------------------------
  179.  
  180. 'QUINTO CASO
  181. Case VBA.Minute(AG) > 0 And VBA.Minute(AH) > 0 And VBA.Minute(AI) > 0 _
  182.    And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) > 30 _
  183.    And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) <= 60
  184.    Application.EnableEvents = False
  185.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  186.    If AH > 1 Then G = VBA.Int((AH) * 24) + 1 Else G = VBA.Hour(AH) + 1
  187.    If AI > 1 Then H = VBA.Int((AI) * 24) Else H = VBA.Hour(AI)
  188.  
  189. Case VBA.Minute(AG) > 0 And VBA.Minute(AH) > 0 And VBA.Minute(AI) > 0 _
  190.    And VBA.Minute(AG) + VBA.Minute(AH) + VBA.Minute(AI) > 60
  191.    Application.EnableEvents = False
  192.    If AG > 1 Then F = VBA.Int((AG) * 24) Else F = VBA.Hour(AG)
  193.    If AH > 1 Then G = VBA.Int((AH) * 24) Else G = VBA.Hour(AH)
  194.    If AI > 1 Then H = VBA.Int((AI) * 24) + 1 Else H = VBA.Hour(AI) + 1
  195. '--------------------------------------------------------------------------------------------
  196.  
  197.  
  198. '---------------------------------------------------------------------------------------------
  199. End Select
  200. End If
  201. Set AG = Nothing
  202. Set AH = Nothing
  203. Set AI = Nothing
  204. Set F = Nothing
  205. Set G = Nothing
  206. Set H = Nothing
  207. Application.EnableEvents = True
  208. End Sub



PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 22:04
Lunedì, 16/05/2011
vuoi la risposta irritata oppure la risposta di gentile irritazione???

Secondo te si può trasformare un codice così incasinato in una "Semplice" formula excel? Un minimo di decenza nello scrivere richieste ci andrebbe anche....

PM Quote
Avatar
trittico69 (Normal User)
Pro


Messaggi: 144
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 22:46
Lunedì, 16/05/2011
altri forum mi hanno dettto di si e me lo stanno facendo

PM Quote
Avatar
lorenzo (Normal User)
Guru


Messaggi: 1178
Iscritto: 15/04/2008

Segnala al moderatore
Postato alle 9:12
Martedì, 17/05/2011
beati loro che hanno tempo da perdere...io di incasinarmi con excel non ci penso neanche e non capisco nemmeno il motivo.

Hai un codice vba, inseriscilo in un bottone, perché fare casino con una formula...

PM Quote
Avatar
trittico69 (Normal User)
Pro


Messaggi: 144
Iscritto: 02/04/2010

Segnala al moderatore
Postato alle 20:05
Martedì, 17/05/2011
Non so quale dei due esempi è corretto
Pimo caso
Codice sorgente - presumibilmente Plain Text

  1. =SE(E(MINUTO(AG31)<=30;MINUTO(AH31)<=30;MINUTO(AI31)<=30);SE(AG31>1;INT(AG31*24);ORA(AG31));0) +


Secondo caso
Codice sorgente - presumibilmente Plain Text

  1. SE(E(MINUTO(AG31)<=30;MINUTO(AH31)=0;MINUTO(AI31)=0);SE(AG31>1;INT(AG31*24);ORA(AG31));0)……

oppure

primo caso

Codice sorgente - presumibilmente Plain Text

  1. =SE(E(MINUTO(AG31)<=30;MINUTO(AH31)<=30;MINUTO(AI31)<=30);SE(AG31>1;INT(AG31*24);ORA(AG31));0) +
  2. SE(E(MINUTO(AG31)<=30;MINUTO(AH31)<=30;MINUTO(AI31)<=30);SE(AG31>1;INT(AH31*24);ORA(AH31));0) +
  3. SE(E(MINUTO(AG31)<=30;MINUTO(AH31)<=30;MINUTO(AI31)<=30);SE(AG31>1;INT(AI31*24);ORA(AI31));0) +


Secondo caso

Codice sorgente - presumibilmente Plain Text

  1. SE(E(MINUTO(AG31)<=30;MINUTO(AH31)=0;MINUTO(AI31)=0);SE(AG31>1;INT(AG31*24);ORA(AG31));0)+
  2. SE(E(MINUTO(AG31)<=30;MINUTO(AH31)=0;MINUTO(AI31)=0);SE(AG31>1;INT(AH31*24);ORA(AH31));0)+
  3. SE(E(MINUTO(AG31)<=30;MINUTO(AH31)=0;MINUTO(AI31)=0);SE(AG31>1;INT(AI31*24);ORA(AI31));0)………………..



PM Quote