| | 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] |
|
|