Condividi:        

Funzioni per foglio Prima Nota

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

Funzioni per foglio Prima Nota

Postdi libraio » 21/01/20 15:07

SO Windows 7 + EXCEL 2003

Un saluto a tutti,
sto creando un foglio di Prima Nota, il più possibile "automatizzato".

Vorrei applicare la seguente funzione.
=SE(B2="Incasso Fatt.";-G2;0)
ma non ottengo il risultato voluto, perchè la cella B2 contiene un testo in parte ripetuto (Incasso fatt.) ed in parte variabile (il n. del documento). Io vorrei che il risultato in cella G2 fosse sottratto nella cella scelta - in cui applico la funzione - indipendentemente dalla parte variabile del testo.
Mi aiutate a correggere la formula?...

Altro caso che non riesco a risolvere:
= se la cella B2 contiene il testo "POS" vorrei che il cursore si spostasse automaticamente nella cella E2.
E' possibile?

Grazie per il prezioso aiuto
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31

Sponsor
 

Re: Funzioni per foglio Prima Nota

Postdi Anthony47 » 21/01/20 16:32

La prima formula potrebbe essere
Codice: Seleziona tutto
=SE(VAL.ERRORE(RICERCA("Incasso Fatt";B2));0;-G2)

Quanto al posizionamento automatico in funzione del contenuto di colonna B, devi procedere con una macro di WorksheetChange, ad esempio:
Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ckArea As String
'
ckArea = "B2:B100"      '<<< L'area a cui si applichera' la regola
If Not Application.Intersect(Target, Range(ckArea)) Is Nothing Then
    If Target.Count = 1 Then
        If InStr(1, Target.Value, "POS", vbBinaryCompare) > 0 Then
            Target.Offset(0, 3).Select
        End If
    End If
End If
End Sub

La riga marcata <<< identifica a quale intervallo la regola sara' applicata

Ambedue le proposte, per le poche informazioni fornite, guardano l'intero contenuto della cella. Nella formula tuttavia ho scelto di ignorare Maiuscolo/Minuscolo (quindi contenuti tipo "Questo e' un INCASSO Fattura" oppure "incasso Fattura" porteranno al risultato -G2); nella macro invece ho scelto di cercare la presenza di POS (maiuscolo; quindi contenuti tipo "Posizione netta" oppure "pagamento via pos" non produrranno effetto, mentre contenuti tipo "Pagamento POS" oppure "POS" ma anche "Valore POSITIVO" produrranno l'effetto)

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Funzioni per foglio Prima Nota

Postdi libraio » 21/01/20 19:59

Grazie Anthony,
la prima formula risponde perfettamente alle mie esigenze

Riguardo il posizionamento automatico, ho copiato il codice, ma potrei aver commesso un errore... Non ottengo purtroppo il risultato sperato.
Qui puoi trovare l'immagine del codice, così come l'ho copiato:
Immagineupload to photos site

Rinnovo il mio ringraziamento, confidando in "ulteriori sviluppi"...
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31

Re: Funzioni per foglio Prima Nota

Postdi Anthony47 » 21/01/20 20:42

Dopo 10 anni mi sembrava che potessi omettere che il codice della WorksheetChange va posizionato "nel modulo vba del foglio su cui lavori", e non in un Modulo standard :D

Quindi, partendo da Excel:
a) Tasto destro sul Tab col nome del Foglio a cui il codice va agganciato
b) Scegli Visualizza codice
In questo modo si aprira' l'ambiente Vba direttamente sul modulo in cui il codice va inserito

Riprova...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Funzioni per foglio Prima Nota

Postdi libraio » 22/01/20 13:18

Grazie Anthony,
ammiro la decennale pazienza che mi dedichi... :)
Non avevo mai applicato una Worksheet Change; adesso lo so.

Ho tentato di implementare la Worksheet Change con un altro comando, ma "capra resto":
vorrei applicare la stessa funzione di "POS" con "VERSAMENTO" e "INCASSO GIORNALIERO", si possono inserire nella stessa Worksheet Change?
Ti chiedo scusa per questa ulteriore richiesta, ma il mio è un work in progress, dopo anni di prime note compilate manualmente, e, con il tuo insostituibile contributo, sto realizzando un bel lavoretto.
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31

Re: Funzioni per foglio Prima Nota

Postdi Anthony47 » 22/01/20 13:49

vorrei applicare la stessa funzione di "POS" con "VERSAMENTO" e "INCASSO GIORNALIERO", si possono inserire nella stessa Worksheet Change?
La risposta e' Sì, ma ovviamente bisogna lavorare sulle condizioni complete.

Se parliamo di altre voci inseribili nella stessa area di POS, allora basta aggiungere altre If con le condizioni da esaminare e l'operazione da eseguire. Ad Esempio:
Codice: Seleziona tutto
        If InStr(1, Target.Value, "POS", vbBinaryCompare) > 0 Then
            Target.Offset(0, 3).Select              'B + 3 = E
        ElseIf InStr(1, Target.Value, "VERSAMENTO", vbBinaryCompare) > 0 Then
            Target.Offset(0, 4).Select              '<<< B + 4 = F
        ElseIf InStr(1, Target.Value, "GIORNALIERO", vbBinaryCompare) > 0 Then
            Target.Offset(0, 5).Select              '<<< B + 4 = G
        'altri ElseIf
        '   Altri Select
        End If

Ovviamente dovresti modificare le nuove If in modo che selezionino le colonne desiderate, agendo sulle istruzioni marcate <<<

Se invece l'area in cui si scrivono questi nuovi valori e' diversa da B2:B100 allora andrebbe ripetuto l'intero blocco, da ckArea = "xxx:yyy" fino alla fine

Ciao
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Funzioni per foglio Prima Nota

Postdi libraio » 22/01/20 14:13

Fantastico!
Grazie di cuore
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31

Re: Funzioni per foglio Prima Nota - AGGIORNAMENTO

Postdi libraio » 06/11/23 19:43

So Windows 7 + Office 2003

Ciao a tutti,
vorrei implementare la preziosa macro di WorksheetChange di Anthony, consegnatami da Anthony nel post 21/01/20.
Le stringhe che vorrei aggiungere sono:

Codice: Seleziona tutto
ckArea = "C2:C10000"      '<<< L'area a cui si applichera' la regola
If Not Application.Intersect(Target, Range(ckArea)) Is Nothing Then
    If Target.Count = 1 Then
        If InStr(1, Target.Value, "BCCPAY", vbBinaryCompare) > 0 Then
            Target.Offset(0, 2).Select
        ElseIf InStr(1, Target.Value, "PAGOBANCOMAT", vbBinaryCompare) > 0 Then
            Target.Offset(0, 2).Select              '<<< B + 4 = F
        ElseIf InStr(1, Target.Value, "AMEX", vbBinaryCompare) > 0 Then
            Target.Offset(0, 2).Select              '<<< B + 4 = F
        'altri ElseIf
        '   Altri Select
        End If

Ne risulta il seguente codice:

Codice: Seleziona tutto
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ckArea As String
'
ckArea = "B2:B10000"      '<<< L'area a cui si applichera' la regola
If Not Application.Intersect(Target, Range(ckArea)) Is Nothing Then
    If Target.Count = 1 Then
        ElseIf InStr(1, Target.Value, "VERSAMENTO", vbBinaryCompare) > 0 Then
            Target.Offset(0, 3).Select              '<<< B + 4 = F
        ElseIf InStr(1, Target.Value, "Ricarica carta prepagata", vbBinaryCompare) > 0 Then
            Target.Offset(0, 6).Select              '<<< B + 4 = F
        ElseIf InStr(1, Target.Value, "INCASSO GIORNALIERO", vbBinaryCompare) > 0 Then
            Target.Offset(0, 2).Select              '<<< B + 4 = G
        'altri ElseIf
        '   Altri Select
        End If
ckArea = "C2:C10000"      '<<< L'area a cui si applichera' la regola
If Not Application.Intersect(Target, Range(ckArea)) Is Nothing Then
    If Target.Count = 1 Then
        If InStr(1, Target.Value, "BCCPAY", vbBinaryCompare) > 0 Then
            Target.Offset(0, 2).Select
        ElseIf InStr(1, Target.Value, "PAGOBANCOMAT", vbBinaryCompare) > 0 Then
            Target.Offset(0, 2).Select              '<<< B + 4 = F
        ElseIf InStr(1, Target.Value, "AMEX", vbBinaryCompare) > 0 Then
            Target.Offset(0, 2).Select              '<<< B + 4 = F
        'altri ElseIf
        '   Altri Select
        End If
        End If
        End If
End Sub


che, ovviamente, non funziona! Dove sbaglio?
E' possibile inserire una seconda condizione (ck area) nella medesima macro?
Grazie per l'aiuto
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31

Re: Funzioni per foglio Prima Nota

Postdi Anthony47 » 07/11/23 00:46

la prima riga dopo If Target.Count=1 dovrebbe essere If Instr(etc etc ma in uno dei due blocchi te ne sei dimenticato...
Avatar utente
Anthony47
Moderatore
 
Post: 19196
Iscritto il: 21/03/06 16:03
Località: Ivrea

Re: Funzioni per foglio Prima Nota

Postdi libraio » 07/11/23 10:40

Grazie Anthony,
come avrai notato ho "scomposto" la riga Pos del primo codice ma, cancellando la riga originaria, ho dimenticato di convertire la nuova prima riga...
Gli esami non finiscono mai (e io resto un ripetente impenitene).
Ancora grazie
libraio
Utente Senior
 
Post: 329
Iscritto il: 04/01/10 20:31


Torna a Applicazioni Office Windows


Topic correlati a "Funzioni per foglio Prima Nota":


Chi c’è in linea

Visitano il forum: Nessuno e 34 ospiti