Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

trasformare 2 formule in vba

Ultimo Aggiornamento: 08/11/2020 21:35
Post: 14
Registrato il: 18/08/2019
Età: 19
Utente Junior
un saluto
OFFLINE
05/11/2020 20:15

Ciao a tutti.
Nel workbook allegato "master_05_11_20" ci sono 2 formule per trovare valori tra questo workbook e il wookbook "cartel2" riferite agli anni 2017/2018/2019

=MATR.SOMMA.PRODOTTO(([cartel2.xlsx]Foglio1!$F$2:$F$63000=$A3)*(([cartel2.xlsx]Foglio1!$N$2:$N$63000)=D$2)*([cartel2.xlsx]Foglio1!$AC$2:$AC$63000))


=SOMMA.PIÙ.SE([cartel2.xlsx]Foglio1!$AC:$AC;[cartel2.xlsx]Foglio1!$F:$F;A3;[cartel2.xlsx]Foglio1!$N:$N;$J$2)


è possibile trasformare queste formule in vba?
grazie
fc
Post: 1.010
Registrato il: 16/08/2015
Città: CORDENONS
Età: 67
Utente Veteran
Excel 2016-32bit Win11
OFFLINE
05/11/2020 21:51

Usa il Registratore di Macro per convertirle. Avvia il Registratore / simula una modifica alla cella / e chiudi il Registratore.
In un modulo VBE troverai traccia di quanto dovrai riportare in una macro.

______________________________________________________________
C'è chi fa le COSE a CASO e chi fa CASO alle COSE (Ignoto)
Post: 14
Registrato il: 18/08/2019
Età: 19
Utente Junior
un saluto
OFFLINE
05/11/2020 22:33

Ho creato le formule con il registratore, solo che le righe per ogni formula e più di 700000 e si inchioda tutto.


Option Explicit


Sub Macro1()

    Range("D3:D900000").Select
    Range("D3:D900000").Formula = "=SUMPRODUCT(([cartel2.xlsx]Foglio1!R2C6:R630000C6=RC1)*(([cartel2.xlsx]Foglio1!R2C14:R630000C14)=R2C)*([cartel2.xlsx]Foglio1!R2C29:R630000C29))"
    'Range("E3").Select

End Sub

Sub Macro2()

    Range("F3:F900000").Select
    Range("F3:F900000").Formula = "=SUMPRODUCT(([cartel2.xlsx]Foglio1!R2C6:R630000C6=RC1)*(([cartel2.xlsx]Foglio1!R2C14:R630000C14)=R2C)*([cartel2.xlsx]Foglio1!R2C29:R630000C29))"
    'Range("G3").Select

End Sub

Sub Macro3()

    Range("H3:H900000").Select
    Range("H3:H900000").Formula "=SUMPRODUCT(([cartel2.xlsx]Foglio1!R2C6:R630000C6=RC1)*(([cartel2.xlsx]Foglio1!R2C14:R630000C14)=R2C)*([cartel2.xlsx]Foglio1!R2C29:R630000C29))"
    'Range("I3").Select

End Sub

'=========================================================================================================================================================

Sub Macro4()

   Range("J3:J900000").Select
   Range("J3:J900000").Formula = "=SUMIFS([cartel2.xlsx]Foglio1!C29,[cartel2.xlsx]Foglio1!C6,RC[-9],[cartel2.xlsx]Foglio1!C14,R2C10)"
    'Range("K3").Select

End Sub

Sub Macro5()

    Range("L3:L900000").Select
    Range("L3:L900000").Formula "=SUMIFS([cartel2.xlsx]Foglio1!C29,[cartel2.xlsx]Foglio1!C6,RC[-11],[cartel2.xlsx]Foglio1!C14,R2C12)"
    'Range("M3").Select

End Sub

Sub Macro6()

    Range("N3:N900000").Select
    Range("N3:N900000").Formula = "=SUMIFS([cartel2.xlsx]Foglio1!C29,[cartel2.xlsx]Foglio1!C6,RC[-13],[cartel2.xlsx]Foglio1!C14,R2C14)"
    'Range("O3").Select

End Sub


è possibile con una macro che incolli i risulati senza le formule?
Post: 6.132
Registrato il: 14/11/2004
Utente Master
Office 2019
OFFLINE
07/11/2020 11:38

Ciao vista la mole dei dati di partenza che credo sia il file Master, a te interessa trovare solamente i dati corrispondenti alla colonna "A" cioè la somma di tutto l'anno. perche ci sono colonne verdi e gialle dello stesso anno?



forse le colonne gialle sarebbero il risultato della macro

se è cosi ti preparo la macro che fa il lavoro

fai sapere, ciao By sal (8-D


se ti piace la soluzione sostienici con una DONAZIONE a piacere. Grazie clicca qui
Post: 15
Registrato il: 18/08/2019
Età: 19
Utente Junior
un saluto
OFFLINE
07/11/2020 11:46

Ciao sal.
Nel foglio master colonne verdi devono essere inseriti i valori degli
anni divisi del foglio cartel.
Le colonne gialle sono altri valori che poi vengono inserite da una query a parte.
La macro deve inserire i valori nelle colonne verdi.
Grazie
[Modificato da franc.ciccio 07/11/2020 11:47]
07/11/2020 12:16

Ormai l'ho fatto ed allego
Ti allego il file "Funzionante", e l'altro file cartel2.xlsx (tutti due aperti)

Se devi sommare usa Foglio1, per 900.000 righe ci metterà 5/10/15 minuti
Se devi sommare per ogni anno, usa Foglio2 non sò quanto impiegherà

Ps. Non ci sono formule
Causa errore, sostituire... (SumIfs<<<>>>SumIf)
Trova1...rg = WorksheetFunction.SumIf(sh2.Range("F2:F" & Ur2), "=" & sh1.Cells(X, 1), sh2.Range("AC2:AC" & Ur2))
Trova2...rg = WorksheetFunction.SumIf(sh2.Range("AD2:AD" & Ur2), "=" & sh1.Cells(X, 1) & "_" & sh1.Cells(2, Y), sh2.Range("AC2:AC" & Ur2))
[Modificato da ABCDEF@Excel 07/11/2020 14:09]
Post: 16
Registrato il: 18/08/2019
Età: 19
Utente Junior
un saluto
OFFLINE
07/11/2020 21:24

Grazie ABCDEF ma con moltissime righe mi sa che poi si blocchi tutto.
Ora ho provato con 5/6mila righe ed è lento, con più di 500/600 mila non so.
fc
08/11/2020 00:29

Inserisci queste righe prima e dopo, deve migliorare di sicuro
Application.ScreenUpdating = False
Application.Calculation = xlManual
>>>Ur1 = sh1.Range("A" & Rows.Count).End(xlUp).Row
...
...
...
>>>MsgBox "Fatto"
Application.Calculation = xlAutomatic
Application.ScreenUpdating = True
[Modificato da ABCDEF@Excel 08/11/2020 11:20]
Post: 17
Registrato il: 18/08/2019
Età: 19
Utente Junior
un saluto
OFFLINE
08/11/2020 08:21

Ciao ABCDEF ho provato qui a casa con excel2007 con 130000 righe,
si è bloccato tutto.
Provo domani in uffico con office365
Grazie
08/11/2020 11:20

Sicuro d'aver dei dati omogenei?

Sono curioso, allega l'originale cartel2.xlsx (casomai usa https://www.filedropper.com/)
Se ci sono dati personali, fai una copia delle colonne F-N-AC
[Modificato da ABCDEF@Excel 08/11/2020 11:27]
Post: 18
Registrato il: 18/08/2019
Età: 19
Utente Junior
un saluto
OFFLINE
08/11/2020 13:02

Ciao, al file carte2_A ho aggiunto fino a 20000 righe.
Ho dimenticato nel file "funzionante" allegato di cambiare
Dim wk2 As Workbook: Set wk2 = Workbooks("cartel2_A.xlsx")
fc
Post: 1.345
Registrato il: 27/06/2011
Utente Veteran
excel 2007
OFFLINE
08/11/2020 13:25

ciao,

per evitare di far rileggere tutto il thread,
allegherei anche i 2 file interessati nella loro ultima versione.

Cosa ne pensi?


ciao
Frank







Stretta la foglia, larga la via, dite la vostra che ho detto la mia.
Excel 2007 forse anche 2013 ... 2021 ... 365 e future...
Post: 19
Registrato il: 18/08/2019
Età: 19
Utente Junior
un saluto
OFFLINE
08/11/2020 19:57

Ops, dimenticato di inserire l' allegato.
Ormai con sto coronavirus sono in confusione...
fc
[Modificato da franc.ciccio 08/11/2020 19:58]
08/11/2020 21:35

Con 20.000 righe Excel non si è bloccato, foglio2 tempo = 2 minuti

Nel post 07/11/2020 12:16... (sommare per ogni anno, usa Foglio2 e sostituire)
Trova2...rg = WorksheetFunction.SumIf(sh2.Range("AD2:AD" & Ur2), ...
Purtroppo mi sono dimenticato di farTi sostituire pure>>>Ur2 = sh2.Range("A" & Rows.Count).End(xlUp).Row con
Ur2 = sh2.Range("F" & Rows.Count).End(xlUp).Row

Comunque con le varianzioni, Foglio2 tempo = quasi 3 minuti (20.000*4 annate)=80.000 operazioni
Ps. Casoma vedi in alto-alto Funzionante.xlsm Excel (non risponde), non Ti preocupare aspetta senza toccare nulla che finirà.
[Modificato da ABCDEF@Excel 08/11/2020 21:45]
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 09:16. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com