Aiutamici Forum
Benvenuto Ospite Cerca | Topic Attivi | Utenti | | Log In | Registra

[Excel] contare un num. in una tab.solo se in un'altra tab.c'è un dato numero- II Opzioni
aetio
Inviato: Tuesday, August 03, 2010 10:52:00 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
Eseguito:
Ecco la FOTO della tabella Pivot, che si limita alla prima parte (da col.8 a col.20). Manca la seconda parte, a destra nel foglio, da col.21 a col.33
E la FOTO di quanto mi hai chiesto di eseguire
Per completezza, magari ti può essere utile per una diagnosi, allego anche la FOTO della tabella di confronto, che arriva fino a riga 61140, ma solo la prima delle cinque tabelle, da col.AK a col.AN, perché non passa poi alla successiva, da col.AP a col.AS...
Non riesco proprio a capire quale problema possa incontrare con la nuova versione del programma, dato che non deve fare cose dell'altro mondo... le cose dell'altro mondo le fai tu con queste macro! Hai tutta la mia ammirazione...

Grazie infinite e buona giornata,
eZio
a10n11
Inviato: Tuesday, August 03, 2010 12:41:05 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
purtroppo non riesco a riprodurre l'errore con il mio 2003.
Da quanto mi mostri il problema è nel passaggio delle tabelle .
Ti chiedo di fare questa ulteriore prova
aggiungi queste due righe
Test=Cells(Rtab + 1, 256).End(xlToLeft).value
Tad=Cells(Rtab + 1, 256).End(xlToLeft).address
prima della seguente riga:
Cells(Rtab + 1, 256).End(xlToLeft).Delete
fammi sapere che valore estrae.

Per quanto riguarda invece l'indicazione Somma di Numero/Conteggio di numero la macro esegue giustamente il conteggio e non la somma, nella versione 2007 non viene cambiata la Caption (definizione) del campo.
saluti
Giap

aetio
Inviato: Tuesday, August 03, 2010 1:39:10 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
aggiungo le righe, lancio la macro. A un certo punto (presumo quando arriva all'ultima riga della 1^ tabella di confronto di Foglio2) compare la solita finestra di errore di run-time'1004' impossibile nascondere la selezione. Ecco la FOTO del debug. Ma non restituisce null'altro, solo la solita mezza tabella.
a10n11 ha scritto:
Per quanto riguarda invece l'indicazione Somma di Numero/Conteggio di numero la macro esegue giustamente il conteggio e non la somma, nella versione 2007 non viene cambiata la Caption (definizione) del campo
... non capisco: è un'incongruenza tra le due versioni del programma? In effetti i numeri sono un conteggio, non una somma...
Grazie assai e buon pomeriggio,
eZio
a10n11
Inviato: Tuesday, August 03, 2010 5:49:09 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve
quello che mi serve vedere sono i valori che assumono le due variabili Test - Tad
quando arrivi al punto di errore devi andare con il cursore sopra la voce Test e copiare il valore assunto
la stessa cosa sulla voce Tad

Test=Cells(Rtab + 1, 256).End(xlToLeft).value
Tad=Cells(Rtab + 1, 256).End(xlToLeft).address

Per quanto riguarda invece il titolo della casella della Tabella Pivot , in ambiente 2000/2003 cambiando il metodo viene anche cambiata la titolazione, in mabiente 2007 probabilmente bisogna cambiare la Caption da codice.
prova a sostituire questa riga:

ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Somma di Numero"). _
Function = xlCount

con queste:

With ActiveSheet.PivotTables("Tabella_pivot" & Pr).PivotFields("Somma di Numero")
.Function = xlCount
.Caption = "conteggio di numero"
End With

saluti
Giap


aetio
Inviato: Tuesday, August 03, 2010 6:40:10 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
scusa la mia ignoranza :))

Ecco cosa restituisce la macro:
Test= "Totale complessivo"
Tad= "$S$5"

Per quanto riguarda il "Conteggio di numero" come al solito ...Centro!
Grazie e buona serata,
eZio

EDIT:

ho fatto una prova con una copia del file delle mie tabelle:
ho più che raddoppiato le righe delle tabelle > da circa 4.700 a circa 11.500 e ho messo l'apice alla riga
Cells(Rtab + 1, 256).End(xlToLeft).Delete
Risultato: la macro gira e termina, le tabelle di confronto tabelle di Foglio2 sono tutte compilate, arrivano circa a riga 150.000, ma il calcolo restituisce le due tabelle Pivot senza la colonna centrale che le separa... E nella cella di competenza viene mostrato "Conteggio di numero" ;)


a10n11
Inviato: Tuesday, August 03, 2010 7:40:56 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
salve

1) per la colonna scomparsa:(mistero!!!)
prova a variare la riga in rosso:

Sub CreaPivot2()
Select Case Tab2
Case 1
colp = 3
Rtab = Sheets("TabPivot").Range("C65536").End(xlUp).Row + 3
Case 2
colp = 22
.......

così vediamo che succede.


2) per l'errore della riga incriminata, non vorrei che ci fosse una variazione nella sintassi VBA.
Dovresti provarmi quanto segue:

vai sul foglio TabPivot >accendi il registratore di macro>
con il registratore attivato, Clik Dx sulla cella "Totale complessivo" click su "Nascondi"
ferma il registratore di macro e posta il codice registrato.
saluti
Giap



aetio
Inviato: Tuesday, August 03, 2010 8:38:52 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
ho fatto, ma l'opzione "nascondi" non c'è... :((
ecco la FOTO del menù che ho a disposizione.
Ed ecco il codice al click sull'unica voce riguardante il Totale complessivo (rimuovi):

Sub Macro1()
ActiveSheet.PivotTables("Tabella_pivot1").RowGrand = False
End Sub


Agendo invece sull'opzione "Opzioni tabella pivot" del menù a tendina si accede alla FINESTRA e togliendo la spunta della voce "Mostra totali complessivi per le righe" ecco il codice:

Sub Macro2()
Range("S5").Select
ActiveSheet.PivotTables("Tabella_pivot1").ColumnGrand = False
End Sub


spero che siano sufficienti per capire l'origine del problema...

Grazie infinite e buona giornata,
eZio

p.s. come si può intravedere nella foto, ora le 2 tabelle Pivot sono separate dalla fatidica colonna! ;)) sei immensamente bravo............

EDIT:
leggendo nel codice della macro2 noto un S5 che ha un non so ché di familiare.... è per caso (scusami se dico una castroneria...ricordi? sono una cippa in materia ahahah) quel famoso Tad="$S$5" ?!?
a10n11
Inviato: Wednesday, August 04, 2010 10:58:07 AM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
aetio ha scritto:
Ciao,

p.s. come si può intravedere nella foto, ora le 2 tabelle Pivot sono separate dalla fatidica colonna!

EDIT:
leggendo nel codice della macro2 noto un S5 che ha un non so ché di familiare.... è per caso (scusami se dico una castroneria...ricordi? sono una cippa in materia ahahah) quel famoso Tad="$S$5" ?!?


salve
ora è tutto chiaro. Dall'immagine che hai postato, si vede come la tabella Pivot (la prima come in immagine) nella versione 2007 contrariamente alla mia versione non si ferma alla colonna S ma si estende fino alla colonna T
da qui l'errore dovuto ad una sovrapposizione.
Quindi con la modifica della variabile "Colp" portata a 22 la cosa si è risolta.
Dal codice registrato che hai postato ho imparato qualcosa di nuovo anche io (la proprietà RowGrand e ColumnGrand)

quindi la soluzione finale con la modifica della variabile Colp
e con la modifica che segue:
eliminare le righe seguenti:

Range("A65536").End(xlUp).Delete
Cells(Rtab + 1, 256).End(xlToLeft).Delete

e sostituirle con queste:

ActiveSheet.PivotTables("Tabella_pivot" & Pr).ColumnGrand = False
ActiveSheet.PivotTables("Tabella_pivot" & Pr).RowGrand = False

In teoria ora dovrebbe girare a dovere.


aetio ha scritto:
Ciao,
Leggendo nel codice della macro2 noto un S5 che ha un non so ché di familiare.... è per caso (scusami se dico una castroneria...ricordi? sono una cippa in materia ahahah) quel famoso Tad="$S$5" ?!?


Si S5 della macro è lo stesso valore estratto dalla variabile Tad che ti ho fatto usare per verifcare che leggesse
la cella giusta.
saluti
Giap


aetio
Inviato: Wednesday, August 04, 2010 11:51:05 AM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
ti confermo con grande soddisfazione che la macro ora gira perfettamente e senza più intoppi.

Un dettaglio, credo marginale: leggendo la macro/ sub Confronta_Tabelle2() c'è la riga
Range("AK2:bH65536").ClearContents

e anche nella Sub CreaPivot2() dopo l'istruzione
colp = 3
c'è
Rtab = Sheets("TabPivot").Range("C65536").End(xlUp).Row + 3
e più sotto
colp = 22
Rtab = Sheets("TabPivot").Cells(65536, colp).End(xlUp).Row + 3


il 65536 menzionato è riferito al 2002, penso... dato che ora la macro gira in un ambiente enormemente più grande bisogna fare qualche correzione a quella variabile?

Ti sono immensamente grato per l'aiutone-one-one e ancora -one che mi hai dato. Una lezione esemplare sotto ogni aspetto.
Grazie infinite e buona giornata,
eZio
a10n11
Inviato: Wednesday, August 04, 2010 12:25:26 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
Salve
L'osservazione è legittima e la modifica indispensabile.

aetio ha scritto:

Un dettaglio, credo marginale: leggendo la macro/ sub Confronta_Tabelle2() c'è la riga
Range("AK2:bH65536").ClearContents

Cambia così:
Range("AK:BH" & Rows.Count).ClearContents

aetio ha scritto:

e anche nella Sub CreaPivot2() dopo l'istruzione
colp = 3
c'è
Rtab = Sheets("TabPivot").Range("C65536").End(xlUp).Row + 3


Cambia così:
Rtab = Sheets("TabPivot").Cells(Rows.Count, colp).End(xlUp).Row + 3


aetio ha scritto:

e più sotto
colp = 22
Rtab = Sheets("TabPivot").Cells(65536, colp).End(xlUp).Row + 3


il 65536 menzionato è riferito al 2002, penso... dato che ora la macro gira in un ambiente enormemente più grande bisogna fare qualche correzione a quella variabile?


Cambia così:
Rtab = Sheets("TabPivot").Cells(Rows.Count, colp).End(xlUp).Row + 3




Ora non mi rimane che augurati Buon lavoro.
saluti
Giap

aetio
Inviato: Wednesday, August 04, 2010 2:00:54 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
scusami tanto... che rompiscatole che sono!! :))
la macro con le nuove correzioni si blocca QUI con il messaggio di Errore di run-time: Metodo 'Range' dell'oggetto'_Global' non riuscito...
Mi spiace molto disturbarti ancora su questo argomento...
Grazie e buon pomeriggio,
eZio
a10n11
Inviato: Wednesday, August 04, 2010 2:36:01 PM

Rank: AiutAmico

Iscritto dal : 5/29/2003
Posts: 1,694
aetio ha scritto:
Ciao,
scusami tanto... che rompiscatole che sono!! :))
la macro con le nuove correzioni si blocca QUI con il messaggio di Errore di run-time: Metodo 'Range' dell'oggetto'_Global' non riuscito...
Mi spiace molto disturbarti ancora su questo argomento...
Grazie e buon pomeriggio,
eZio


salve
ci credo che non funziona!!!!!!!!!!! un pezzo mi è rimasto sulla punta delle dita:

l'istruzione giusta è :

Range("AK2:BH" & Rows.Count).ClearContents

se non gli si indicata la riga, con la sola colonna non si va nessuna parte.
saluti e scusa per il disguido.
Giap








aetio
Inviato: Wednesday, August 04, 2010 3:25:43 PM

Rank: AiutAmico

Iscritto dal : 5/10/2010
Posts: 723
Ciao,
ora và che è una meraviglia! :))
Scusami se ti ho assillato con questa benedetta macro... se tu sapessi che problema mi hai risolto!!.... E quante cose ho imparato...
Grazie infinite e buon pomeriggio,
eZio
Utenti presenti in questo topic
Guest


Salta al Forum
Aggiunta nuovi Topic disabilitata in questo forum.
Risposte disabilitate in questo forum.
Eliminazione tuoi Post disabilitata in questo forum.
Modifica dei tuoi post disabilitata in questo forum.
Creazione Sondaggi disabilitata in questo forum.
Voto ai sondaggi disabilitato in questo forum.

Main Forum RSS : RSS

Aiutamici Theme
Powered by Yet Another Forum.net versione 1.9.1.8 (NET v2.0) - 3/29/2008
Copyright © 2003-2008 Yet Another Forum.net. All rights reserved.