Torna indietro   Hardware Upgrade Forum > Software > Programmi e Utility

Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare
Abbiamo messo alla prova il drone Antigravity A1 capace di riprese in 8K a 360° che permette un reframe in post-produzione ad eliche ferme. Il concetto è molto valido, permette al pilota di concentrarsi sul volo e le manovre in tutta sicurezza e decidere con tutta tranquillità come gestire le riprese. La qualità dei video, tuttavia, ha bisogno di uno step in più per essere competitiva
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-11-2007, 21:01   #1
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
[excel] aggiornamento automatico conteggi su file generato al volo

Ciao a tutti. Spiego velocemente il mio problema.
Ho un file di excel che viene creato al volo con vba da una query di access.

Dopo aver riportato nel foglio tutto il recordset di access, accodo ai record alcuni campi calcolati riepilogativi utilizzando la funzione conta.se in questo modo

valore1 = xlApp.CountIf(xlSheet.Range(intervallo), "valore1")
valore2 = xlApp.CountIf(xlSheet.Range(intervallo), "valore2")

Ovviamente se elimino ad esempio una riga nel foglio creato, la funzione conta.se non si aggiorna automaticamente perchè il valore è già stato calcolato.
Mi chiedevo quindi se esistesse un modo per ovviare a questo problema.
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 10:27   #2
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da john_revelator Guarda i messaggi
valore1 = xlApp.CountIf(xlSheet.Range(intervallo), "valore1")
valore2 = xlApp.CountIf(xlSheet.Range(intervallo), "valore2")

Ovviamente se elimino ad esempio una riga nel foglio creato, la funzione conta.se non si aggiorna automaticamente perchè il valore è già stato calcolato.
Mi chiedevo quindi se esistesse un modo per ovviare a questo problema.
In questo modo fai calcolare il tutto una volta sola, durante la creazione VBA del nuovo Sheet Excel, facendo eseguire ad Access una macro di Excel... Un po' tortuoso... E ovviamente nel Foglio ti ritrovi il risultato della Fx, e non la funzione stessa.

Io farei così :

1. Creo una variabile prima dell'esportazione del recordset, che contiene il RecordCount. Questo serve per "costruire" la seguente funzione.
Poniamo che questa variabile si chiami "NUM".

2. Sul foglio appena creato fai inserire da Access la formula in questo modo :

Range("A" & (NUM + 1)).FormulaR1C1 = "=COUNTIF(R[-" & NUM & "]C:R[-1]C,""11"")"
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 12:13   #3
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Ti ringrazio, sei stato molto gentile (speravo proprio in una tua risposta ).
Stasera cercherò di mettere in pratica i tuoi consigli, eventualmente tornerò a chiedere.
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 12:22   #4
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da john_revelator Guarda i messaggi
Ti ringrazio, sei stato molto gentile (speravo proprio in una tua risposta ).
Stasera cercherò di mettere in pratica i tuoi consigli, eventualmente tornerò a chiedere.
Magari posta uno dei tuoi file-tipo Excel generati da Access... Così faccio prima...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 12:51   #5
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Magari posta uno dei tuoi file-tipo Excel generati da Access... Così faccio prima...
Grazie, gentilissimo.
Prima ci sbatto la testa da solo, se avrò problemi saprò di poter contare sul tuo aiuto.
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 17:04   #6
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Purtroppo devo chiedere il tuo aiuto. Mi sto incasinando non poco.
Allora, per il momento sto provando il tutto su una query "statica". Penso che una volta capito il meccanismo riuscirò ad adattarlo alle mie query create con QueryDef.

Supponendo che il mio foglio generato sia così

Codice:
            A    B     C     D
1       QUA ANDRA' IL TITOLO 
2         ID  NOME COGNOME TIPO
3        ...    ...     ...    lavorativo
4                              formativo
5                              lavorativo
6
...
17      ...    ...     ...     formativo
quindi con la prima riga che conterrà l'intestazione creata dinamicamente, la seconda riga che conterrà le intestazioni di colonna e i record contenuti nell'intervallo a3:d17, a me interessa che ad esempio appaia nella cella d19 il totale di lavorativo, nella cella d20 il totale di formativo eccetera (sono in tutto quattro tipologie).

Ho usato una variabile per il conteggio dei record in questo modo

Record = objRST.RecordCount

la usavo già prima anche con la mia soluzione casereccia.
Stavo provando ad adattare la tua formula alla mia situazione ma invano.

Uno dei vari tentativi è stato questo

lavDin = Range("D" & (Record + 2)).FormulaR1C1 = "=COUNTIF(R[-" & Record & "]C:R[-1]C,""lavorativo"")"
xlSheet.Cells(Record + 10, 4).Value = lavDin

ma mi restituisce FALSO.

Grazie per la pazienza.
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 17:29   #7
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Ho fatto qualche piccolo progresso.

xlSheet.Range("D" & (Record + 3)).FormulaR1C1 = "=COUNTIF(R[-" & Record & "]C:R[-1]C,""lavorativo"")"

Se scrivo così nella cella sottostante l'ultimo record, viene visualizzato il numero corretto con la funzione conta.se e anche eliminando le righe il conteggio viene aggiornato nel modo corretto.

Però come detto a me serve applicare la funzione quattro volte.
Se scrivo così ad esempio, estendendo la conta a due tipologie

xlSheet.Range("D" & (Record + 3)).FormulaR1C1 = "=COUNTIF(R[-" & Record & "]C:R[-1]C,""lavorativo"")"
xlSheet.Range("D" & (Record + 3)).FormulaR1C1 = "=COUNTIF(R[-" & Record & "]C:R[-1]C,""formativo"")"

la conta di lavorativo non appare ed esce solo quella di formativo.
Avrei anche un'altra domanda. I conteggi devono trovarsi per forza a partire dalla cella immediatamente sottostante l'ultimo record oppure no?
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 18:36   #8
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Sto ancora provando. Se scrivo

xlSheet.Range("D" & (Record + 3)).FormulaR1C1 = "=COUNTIF(R[-" & Record & "]C:R[-1]C,""lavorativo"")"
xlSheet.Range("D" & (Record + 3)).Offset(1, 0).FormulaR1C1 = "=COUNTIF(R[-" & Record & "]C:R[-1]C,""formativo"")"
xlSheet.Range("D" & (Record + 3)).Offset(2, 0).FormulaR1C1 = "=COUNTIF(R[-" & Record & "]C:R[-1]C,""avvio impresa"")"
xlSheet.Range("D" & (Record + 3)).Offset(3, 0).FormulaR1C1 = "=COUNTIF(R[-" & Record & "]C:R[-1]C,""altro"")"

i valori appaiono tutti e quattro ma non fanno riferimento allo stesso intervallo (nel mio esempio d3:d17) ma diventano d4:d18, d5:d19 eccetera. Come faccio a bloccare il range su cui deve agire ?
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 18:48   #9
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da john_revelator Guarda i messaggi
Però come detto a me serve applicare la funzione quattro volte.
Se scrivo così ad esempio, estendendo la conta a due tipologie

xlSheet.Range("D" & (Record + 3)).FormulaR1C1 = "=COUNTIF(R[-" & Record & "]C:R[-1]C,""lavorativo"")"
xlSheet.Range("D" & (Record + 3)).FormulaR1C1 = "=COUNTIF(R[-" & Record & "]C:R[-1]C,""formativo"")"

la conta di lavorativo non appare ed esce solo quella di formativo.
Avrei anche un'altra domanda. I conteggi devono trovarsi per forza a partire dalla cella immediatamente sottostante l'ultimo record oppure no?
La tua seconda domanda è chiaramente legata alla prima.
Se tu applichi contemporaneamente le due linee di codice che hai postato, la prima formula verrà inserita, e subito sovrascritta dalla seconda.
Puoi mettere il risultato della seconda formula in una cella subito sotto, semplicemente incrementando di 1 quel "(Record+3)".
Inoltre c'è un altro errore nel tuo codice, perchè se "stacchi" di 3 celle rispetto all'ultima che contiene un record, il TUTTO sarà :

Range("D" & (Record + 3)).FormulaR1C1 = "=COUNTIF(R[-" & (Record + 3 - 1) & "]C:R[-3]C,""11"")"

Range("D" & (Record + 4)).FormulaR1C1 = "=COUNTIF(R[-" & (Record + 4 - 1) & "]C:R[-4]C,""11"")"


E così via...
Prova...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 18:50   #10
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Ho già risposto anche al tuo ultimo post...
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 19:00   #11
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
Quote:
Originariamente inviato da MarcoGG Guarda i messaggi
Range("D" & (Record + 3)).FormulaR1C1 = "=COUNTIF(R[-" & (Record + 3 - 1) & "]C:R[-3]C,""11"")"

Range("D" & (Record + 4)).FormulaR1C1 = "=COUNTIF(R[-" & (Record + 4 - 1) & "]C:R[-4]C,""11"")"
Scusa, c'è un "11" che non c'entra un fico...
L' avevo usato io per fare un test... Mettici il TUO valore ovviamente... :

Range("D" & (Record + 3)).FormulaR1C1 = "=COUNTIF(R[-" & (Record + 3 - 1) & "]C:R[-3]C,""TUO_VALORE"")"

Range("D" & (Record + 4)).FormulaR1C1 = "=COUNTIF(R[-" & (Record + 4 - 1) & "]C:R[-4]C,""TUO_VALORE"")"
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 19:23   #12
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Sei un grande. Adesso funziona tutto. Grazie mille

Ho un'ultimissima domanda e poi non ti stresso più .
Mi servirebbe sotto i 4 valori che anche il totale venisse generato automaticamente.

Sto facendo un pò di prove ma sicuramente sbaglio la sintassi.
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 27-11-2007, 21:48   #13
john_revelator
Senior Member
 
L'Avatar di john_revelator
 
Iscritto dal: Jul 2007
Messaggi: 1092
Così funziona

xlSheet.Range("D" & (Record + 7)).Formula = "=SUM(D" & Record + 3 & ":D" & Record + 6 & ")"

Mi hai risolto un grossissimo problema.
Grazie ancora di tutto e complimenti. :)
john_revelator è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 10:01   #14
MarcoGG
Senior Member
 
L'Avatar di MarcoGG
 
Iscritto dal: Dec 2004
Messaggi: 3210
MarcoGG è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Antigravity A1: drone futuristico per riprese a 360° in 8K con qualche lacuna da colmare Antigravity A1: drone futuristico per riprese a ...
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
Fibercop e Microsoft Italia uniscono per...
App Store Award 2025: scarica le 17 app ...
NVIDIA fa marcia indietro, il supporto P...
Addio definitivo alla GeForce GTX 1080: ...
Numeri record per gli iPhone 17: Apple s...
L'Italia del 2025 raccontata da Google: ...
Piaggio lancia Porter NPE, il pick-up el...
Xiaomi L1 a 153€: il proiettore smart 10...
Dopo Amazon, anche il data center di Gro...
Scoppia il caso Meta AI: l'Europa apre u...
Torna in sconto dopo mesi il super table...
Ricarica elettrica senza cavi: in Svizze...
iPhone SE (2016) entra ufficialmente nel...
The God Slayer: Pathea svela il nuovo op...
Spotify Wrapped 2025: il nuovo Wrapped P...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 16:53.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v