Condividi:        

[Excel] creazione report per gestione insoluti

Vuoi potenziare i tuoi documenti Word? Non sai come si fa una macro in Excel? Devi creare una presentazione in PowerPoint?
Oppure sei passato a OpenOffice e non sei sicuro di come lavorare al meglio?

Moderatori: Anthony47, Flash30005

[Excel] creazione report per gestione insoluti

Postdi tricilindrico » 26/03/14 10:02

Buongiorno a tutti, sono Antonio, avrei un problema apparentemente semplice ma che non riesco a risolvere.
Dovrei creare un file in Excel dove disporre su queste colonne questi dati:
CodiceCliente|nomecliente|datablocco|bloccato(si/no)|datasblocco|
in pratica vorrei tenere traccia dei (spero pochi) clienti non paganti, in modo tale da ottenere in un'altra scheda il report dei soli clienti che sono attualmente bloccati (quindi con il campo bloccato=si).
Nel foglio che avevo in mente pensavo di continuare a popolarlo, quindi quando un cliente salda una fattura inserisco una nuova riga, riporto il codice, nome, ometto la data blocco e metto bloccato=no e data sblocco in modo tale da avere uno storico.
Il report ho provato a farlo con una macro però cosa succede: nella macro ho fatto cercare tutte le righe che hanno NO nella colonna bloccato e le faccio cancellare, così mi rimangono solo quelli SI. Però questo elenco è ovviamente sbagliato però, non riesco a far considerare l'ultimo aggiornamento sulla riga con il NO del blocco ...
inserisco la macro "maccheronica" che ho adoperato , chiedo aiuto a Voi, esperti amici, come posso superare questo ostacolo? La traccia delle righe posso ovviamente riconsiderarla completamente, solo mi piacerebbe mantenere una gestione "semplice" in quanto dovrei condividerlo con una persona poco informatica, che adopera Excel 2003.

Codice: Seleziona tutto
Sub copia_e_cancella_righe_NO()
'
'
    Sheets("report").Select
    Cells.Select
    Selection.Clear
    Range("A1").Select
    Sheets("INPUT Dati").Select
    Columns("A:F").Select
    Selection.Copy
    Sheets("report").Select
    Range("A1").Select
    ActiveSheet.Paste
    Range("A1").Select
    Rows("1:1").Select
    Application.CutCopyMode = False
    Selection.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A2:F2").Select
    Selection.Borders(xlDiagonalDown).LineStyle = xlNone
    Selection.Borders(xlDiagonalUp).LineStyle = xlNone
    With Selection.Borders(xlEdgeLeft)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeTop)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeBottom)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlEdgeRight)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideVertical)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    With Selection.Borders(xlInsideHorizontal)
        .LineStyle = xlContinuous
        .ColorIndex = 0
        .TintAndShade = 0
        .Weight = xlThin
    End With
    Range("J1").Select
    Sheets("var").Select
    Range("A4").Select
    Selection.Copy
    Sheets("report").Select
    ActiveSheet.Paste
    Columns("J:J").EntireColumn.AutoFit
    Range("K1").Select
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = "=NOW()"
    Columns("K:K").EntireColumn.AutoFit
    Range("K2").Select
   
 Dim riga As Integer, col As Integer
  col = 4
  For riga = 5000 To 1 Step -1
  If Cells(riga, col) = "NO" Then Rows(riga).Delete
  Next
 Sheets("INPUT Dati").Select
    Range("A1").Select
    Sheets("report").Select

End Sub


Grazie
un gran saluto a tutti voi!
ciao
Antonio
S.O.: Windows 8.1 Pro 64 with media center (ITA)
Off.: Office Professional plus 2013 (15.0.4569.1506) 64 bit (ITA)
tricilindrico
Utente Junior
 
Post: 36
Iscritto il: 05/07/12 14:59

Sponsor
 

Re: [Excel] creazione report per gestione insoluti

Postdi ricky53 » 26/03/14 13:27

ciao,
prova con una "Tabella Pivot".
E' il modo più semplice di avere riepiloghi e prospetti vari.

Una volta che la pivot è stata prodotta l'utilizzo è semplicissimo ... specialmente per utenti poco informatici.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] creazione report per gestione insoluti

Postdi tricilindrico » 26/03/14 15:30

Ciao Ricky53
grazie per il consiglio
Ora ho un motivo in più per capire le pivot ...
grazie del consiglio, ci provo!
ciao

Antonio
S.O.: Windows 8.1 Pro 64 with media center (ITA)
Off.: Office Professional plus 2013 (15.0.4569.1506) 64 bit (ITA)
tricilindrico
Utente Junior
 
Post: 36
Iscritto il: 05/07/12 14:59

Re: [Excel] creazione report per gestione insoluti

Postdi ricky53 » 26/03/14 15:39

Ciao,
bene.

Se non arrivi a quello che ti occorre ... sono QUI.
Servirà un file di esempio ... ma aspettiamo le tue prove.
Dice il vecchio saggio provare e riprovare è l'unica strada per imparare

Più chiara è la vostra spiegazione
Più immediata sarà la nostra soluzione


. . . . . . . . . .
S.O. W10; Office 2003-10-13-16-19
Avatar utente
ricky53
Utente Senior
 
Post: 4565
Iscritto il: 11/04/09 19:29
Località: Italia

Re: [Excel] creazione report per gestione insoluti

Postdi tricilindrico » 27/03/14 10:01

Ciao a tutti
ho fatto delle prove con la tabella pivot, ma ho il sospetto di non aver impostato bene la tabella.
Un dubbio mi assale: ma se impostata bene la tabella, secondo voi, avrò la possibilità di visualizzare solo i clienti che hanno impostato come ultimo blocco SI?
io parto da questo schema per inserire i dati:

Immagine
host image

e questa invece una "prova" con pivot:
Immagine
url immagine

però il risultato finale non va bene ...
Dove sbaglio?
Forse l'idea di usare il SI/NO non'è una grande idea?
Forse mi sto perdendo in un bicchier d'acqua ...
Stavo pensando al massimo ad un'altra macro: ad esempio nel foglio input dati registro il cliente che non paga, quando poi paga, per mantenerne lo storico, tramite la condizione "NO" (quindi bloccato=no) lo faccio copiare in altro foglio, sequenzialmente agli altri?
Grazie a chi potrà darmi un piccolo lume ...
buona giornata!
Antonio
S.O.: Windows 8.1 Pro 64 with media center (ITA)
Off.: Office Professional plus 2013 (15.0.4569.1506) 64 bit (ITA)
tricilindrico
Utente Junior
 
Post: 36
Iscritto il: 05/07/12 14:59

Re: [Excel] creazione report per gestione insoluti

Postdi CANAPONE » 27/03/14 14:29

Ciao,

i Sì/No possono essere filtrati nella pivot.

Non ho capito se vorresti lavorare e filtrare solo ultimi "Sì" relativi ai vari clienti.

Esempio: se la tabella ospita 5 righe del cliente ABC, 3 con il Sì, la pivot deve restituire solo l'ultima riga, quella più in basso e - immagino- con la data più recente.

Saluti
---------------
Excel 2004 su Mac
Excel 2010 su Windows 8
CANAPONE
Utente Senior
 
Post: 430
Iscritto il: 22/11/10 15:43
Località: Firenze

Re: [Excel] creazione report per gestione insoluti

Postdi tricilindrico » 27/03/14 16:58

ciao Canapone
esatto, vorrei avere la visualizzazione delle sole righe con "SI" (quindi cliente bloccato) però solo se lo stato SI è l'ultimo in ordine cronologico. Facendo un esempio pratico, potrà accadere che il cliente ABC in data 1/2/14 è stato impostato a SI, poi in data 5/2/14 è stato impostato a NO. Sempre lo stesso cliente in data 15/2/14 nuovamente in SI e successivamente al 20/2/14 nuovamente in NO. Quindi in data 1/3/14 nuovamente in SI: il report vorrei mi mostrasse solo quest'ultima voce (perchè è un SI ed è l'ultimo) le altre voci mi piacerebbe conservarle a fini statistici e di controllo.
Grazie
ciao
Antonio
S.O.: Windows 8.1 Pro 64 with media center (ITA)
Off.: Office Professional plus 2013 (15.0.4569.1506) 64 bit (ITA)
tricilindrico
Utente Junior
 
Post: 36
Iscritto il: 05/07/12 14:59

Re: [Excel] creazione report per gestione insoluti

Postdi CANAPONE » 27/03/14 20:06

Ciao,

potersti aggiungere una nuova colonna di servizio (la chiamo CONTROLLO).

In D2

--(CONTA.PIU'.SE(B2:$B$1000;B2;C2:$C$1000;"SI")=1)

Attenzione: B2 e C2 liberi, senza riferimenti assoluti.

fai laggere il nuovo campo alla pivot filtrando gli 1.

Spero sia d'aiuto
---------------
Excel 2004 su Mac
Excel 2010 su Windows 8
CANAPONE
Utente Senior
 
Post: 430
Iscritto il: 22/11/10 15:43
Località: Firenze

Re: [Excel] creazione report per gestione insoluti

Postdi tricilindrico » 28/03/14 09:22

CANAPONE ha scritto:Ciao,

potersti aggiungere una nuova colonna di servizio (la chiamo CONTROLLO).

In D2

--(CONTA.PIU'.SE(B2:$B$1000;B2;C2:$C$1000;"SI")=1)

Attenzione: B2 e C2 liberi, senza riferimenti assoluti.

fai laggere il nuovo campo alla pivot filtrando gli 1.

Spero sia d'aiuto


Ciao Canapone
grazie per prima cosa per la dritta.
Solo che forse ho capito male, io nella formula ho inserito:
Immagine
upload immagini

l'ho inserita in E, modificandola (pensavo che nel range dovessi prendere anche la colonna con i SI, giusto?)
Poi, ma forse è una conseguenza del mio errore, la cotruzione della pivot ..
Ma è giusto mettere nelle righe le voci relative al nome cliente e la data e in colonna invece mettere il filtro sui SI?
Grazie mille ciao buona giornata!
Antonio
S.O.: Windows 8.1 Pro 64 with media center (ITA)
Off.: Office Professional plus 2013 (15.0.4569.1506) 64 bit (ITA)
tricilindrico
Utente Junior
 
Post: 36
Iscritto il: 05/07/12 14:59

Re: [Excel] creazione report per gestione insoluti

Postdi CANAPONE » 28/03/14 10:05

Ciao,

va bene anche così: basta filtrare VERO nella pivot.

Per modificare i VERO ed i FALSO prodotti dalle formule in 1/0 (uno/zero) basta aprire le formule con il doppio --

Come logica ottieni gli stessi risultati.
---------------
Excel 2004 su Mac
Excel 2010 su Windows 8
CANAPONE
Utente Senior
 
Post: 430
Iscritto il: 22/11/10 15:43
Località: Firenze

Re: [Excel] creazione report per gestione insoluti

Postdi tricilindrico » 28/03/14 11:08

ciao,
penso però che ci sia stata un'incomprensione: nella tabellina sopra riportata, l'unico risultato che vorrei vedere è "raul" in 10/2/2014 in quanto tutti gli altri, anche se hanno dei si, hanno collezionato un NO in data successiva. Quindi quello che vorrei visualizzare sono le sole righe che hanno un SI come ultima data. Potrebbe succedere, che so, il 4/8/2014 di rimettere un SI su "abc" e quindi vorrei che si visualizzasse nuovamente.
Richiedo: ma la pivot è in grado di fare questo calcolo? o mi conviene orientarmi su una macro che mi vada a "storicizzare" una riga quando metto "NO", in modo tale da avere in tabella solo i SI ?
grazie mille ciao!
Antonio
S.O.: Windows 8.1 Pro 64 with media center (ITA)
Off.: Office Professional plus 2013 (15.0.4569.1506) 64 bit (ITA)
tricilindrico
Utente Junior
 
Post: 36
Iscritto il: 05/07/12 14:59

Re: [Excel] creazione report per gestione insoluti

Postdi CANAPONE » 28/03/14 11:33

Ciao,

potrebbe servire serve una colonna di servizio usando:



Codice: Seleziona tutto
=(CONTA.PIÙ.SE(B2:$B$1000;B2;D2:$D$1000;"SI")=1)*(CONTA.PIÙ.SE(B2:$B$1000;B2;D2:$D$1000;"No")=0)



Saluti
---------------
Excel 2004 su Mac
Excel 2010 su Windows 8
CANAPONE
Utente Senior
 
Post: 430
Iscritto il: 22/11/10 15:43
Località: Firenze

Re: [Excel] creazione report per gestione insoluti

Postdi tricilindrico » 02/04/14 08:16

Buongiorno Canapone

ho fatto alcune prove con la tabella Pivot, sicuramente potente come strumento, ma non mi convince molto per questa esigenza.
Spulciando meglio nel forum avrei trovato un codice di Anthony47 che sarebbe perfetto, in quanto "controlla" in tempo reale il foglio1 e se (nel suo esempio) nella colonna B viene inserito qualche dato, ricopia la riga nel foglio2 aggiungendo anche la data e l'ora dell'inserimento.
Ora, per adattarla alle mie esigenze avrei bisogno di sapere cortesemente come modificare il codice per far si che il controllo non sia sull'inserimento di un valore qualsiasi in colonna "B", ma solo della parola "no" (che selezionerò da un menù di convalida dati "si" o "no") e che la stessa riga (una volta selezionato "no") venga spostata in foglio2 senza lasciare in foglio1 la classica riga vuota.

Il codice di Anthony47 è questo:
Codice: Seleziona tutto
    Private Sub Worksheet_Change(ByVal Target As Range)
    CheckArea = "B2:B1000" '<< L' area delle chiavi; i codici sono a sx
    LogSh = "Foglio2"    '<< Il foglio in cui si accodano le registrazioni
    '
    If Application.Intersect(Target, Range(CheckArea)) Is Nothing Then Exit Sub
    LogLR = Sheets(LogSh).Cells(Rows.Count, 2).End(xlUp).Row
    Sheets(LogSh).Cells(LogLR + 1, 2) = "# " & Target.Value
    Sheets(LogSh).Cells(LogLR + 1, 1) = Target.Offset(0, -1).Value
    Sheets(LogSh).Cells(LogLR + 1, 3) = Now()
    End Sub


per me molto complesso ...
grazie a tutti, buona giornata!
Antonio
S.O.: Windows 8.1 Pro 64 with media center (ITA)
Off.: Office Professional plus 2013 (15.0.4569.1506) 64 bit (ITA)
tricilindrico
Utente Junior
 
Post: 36
Iscritto il: 05/07/12 14:59


Torna a Applicazioni Office Windows


Topic correlati a "[Excel] creazione report per gestione insoluti":


Chi c’è in linea

Visitano il forum: Nessuno e 41 ospiti