Pagina precedente | 1 | Pagina successiva
Vota | Stampa | Notifica email    
Autore

Funzione che tenga conto della cronologia d'inserimento

Ultimo Aggiornamento: 07/03/2020 18:30
Post: 5
Registrato il: 05/03/2020
Età: 26
Utente Junior
2019
OFFLINE
06/03/2020 14:04

Salve, ho un foglio dove in una colonna è presente un valore, successivamente ci sono tre colonne dove possono esserci dei check, infine altre tre colonne che dividono il valore in base ai check presenti.

Mi spiego praticamente, c'è un importo da dividere per tre (colonna A) e ci sono delle colonne (colonne B, C, D) che indicano chi delle tre persone ha pagato, di conseguenza le altre tre colonne (E, F, G) indicano chi è in credito. Il problema è che il primo che paga avrà pagato la cifra intera, per cui sarà in credito nei confronti degli altri, però se ci sono due check anche il secondo risulta in credito (dovrebbe risultare solo "saldato"). Insomma, mettiamo che ci sono Mario, Luigi e Francesca: Mario ha pagato per primo un importo di 300€ ed ha il check nella casella, Luigi paga la sua parte a Mario e riceve il check, però non deve risultare in credito, bensì solo in pari!

Potrei risolvere mettendo nei check i numeri (1 a chi paga per primo e così via), però, per imparare vorrei sapere se esiste una funzione che valuti la cronologia degli inserimenti per cambiare le condizioni.
Post: 4.343
Registrato il: 21/06/2013
Città: NAPOLI
Età: 70
Utente Master
Excel 365
OFFLINE
06/03/2020 14:31

Come detto in precedenza sui forum va sempre allegato un file di esempio con dati non sensibili dove si mostra inserendolo a mano il risultato desiderato.

Alfredo
Post: 5
Registrato il: 05/03/2020
Età: 26
Utente Junior
2019
OFFLINE
06/03/2020 19:53

Re:
alfrimpa, 06/03/2020 14:31:

Come detto in precedenza sui forum va sempre allegato un file di esempio con dati non sensibili dove si mostra inserendolo a mano il risultato desiderato.




Va bene, dopo o domani provvederò a caricare un esempio! In ogni caso, in generale, esiste una funzione che tenga conto della cronologia d'immissione (cioè che se questo è stato inserito prima allora...)?
Post: 6
Registrato il: 05/03/2020
Età: 26
Utente Junior
2019
OFFLINE
06/03/2020 20:02

Sono riuscito a caricare un esempio! Nel file originale, ho inserito una formula per cui in base ai check presenti calcola il credito. Il problema è che se ci sono due check, il secondo che ha pagato (perché il primo paga la cifra intera!) non deve risultare in credito, deve risultare solo che ha saldato!
Post: 779
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
07/03/2020 09:29

Ciao
Potresti spiegare come si intendono i dati, per favore?
In col. A abbiamo un 300 - immagino sia il totale delle 3 quote
In col. B, C e D vi sono 3 nomi; in corrispondenza del primo e del secondo vi è un ok (il terzo è vuoto)
In col E, F e G abbiamo di nuovo i tre nomi; in corrispondenza del primo vi è un 100 mentre le altre due celle sono vuote.

Ora, se il 300 vuole intendersi come totale delle quota di ciascuno, allora il primo nominativo ha pagato e gli altri due no. Perchè nel secondo dovrebbe spuntare "saldato"?

Ciao,
Mario
Post: 7
Registrato il: 05/03/2020
Età: 26
Utente Junior
2019
OFFLINE
07/03/2020 09:34

Marius44, 07/03/2020 09:29:

Ciao
Potresti spiegare come si intendono i dati, per favore?
In col. A abbiamo un 300 - immagino sia il totale delle 3 quote
In col. B, C e D vi sono 3 nomi; in corrispondenza del primo e del secondo vi è un ok (il terzo è vuoto)
In col E, F e G abbiamo di nuovo i tre nomi; in corrispondenza del primo vi è un 100 mentre le altre due celle sono vuote.

Ora, se il 300 vuole intendersi come totale delle quota di ciascuno, allora il primo nominativo ha pagato e gli altri due no. Perchè nel secondo dovrebbe spuntare "saldato"?

Ciao,
Mario

La colonna A riporta il costo della spesa, che viene sempre anticipata da una delle tre persone, che poi deve avere la quota degli altri!
[Modificato da Dester_ 07/03/2020 09:34]
Post: 781
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
07/03/2020 15:50

Ciao
Spero tu abbia conoscenza del linguaggio VBA.
Nel Modulo di classe del Foglio interessato inserisci questa macro
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Integer, i As Long
If Not Intersect(Target, Range("B:D")) Is Nothing Then
  If Target.Columns.Count > 1 Then Exit Sub
  If Target = "" Then Exit Sub
  If Target = 1 Then   'se è stato inserito 1
    Cells(Target.Row, Target.Column + 3) = Cells(Target.Row, 1) / 3 * 2 'allora metti 200
  ElseIf Target = 2 Then 'se è stato inserito 2
    Cells(Target.Row, Target.Column + 3) = "saldato" 'allora metti saldato
    If Cells(Target.Row, 2) = 1 Then col = 5
    If Cells(Target.Row, 3) = 1 Then col = 6
    If Cells(Target.Row, 4) = 1 Then col = 7
    Cells(Target.Row, col) = Cells(3, 1) / 3 'diminuisci di 100
  ElseIf Target = 3 Then 'se è stato inserito 3
    For i = 5 To 7
      Cells(Target.Row, i) = "saldato" 'in tutte le celle metti saldato
    Next i
  End If
End If
End Sub



Nelle celle dell'intervallo B:D invece di inserire ok inserisci il numero 1 o 2 oppure 3. Nelle cella dell'intervallo E:G vedrai, di volta in volta, il credito residuo ovvero "saldato".

Fai sapere. Ciao,
Mario
Post: 8
Registrato il: 05/03/2020
Età: 26
Utente Junior
2019
OFFLINE
07/03/2020 17:13

Marius44, 07/03/2020 15:50:

Ciao
Spero tu abbia conoscenza del linguaggio VBA.
Nel Modulo di classe del Foglio interessato inserisci questa macro
Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
Dim col As Integer, i As Long
If Not Intersect(Target, Range("B:D")) Is Nothing Then
  If Target.Columns.Count > 1 Then Exit Sub
  If Target = "" Then Exit Sub
  If Target = 1 Then   'se è stato inserito 1
    Cells(Target.Row, Target.Column + 3) = Cells(Target.Row, 1) / 3 * 2 'allora metti 200
  ElseIf Target = 2 Then 'se è stato inserito 2
    Cells(Target.Row, Target.Column + 3) = "saldato" 'allora metti saldato
    If Cells(Target.Row, 2) = 1 Then col = 5
    If Cells(Target.Row, 3) = 1 Then col = 6
    If Cells(Target.Row, 4) = 1 Then col = 7
    Cells(Target.Row, col) = Cells(3, 1) / 3 'diminuisci di 100
  ElseIf Target = 3 Then 'se è stato inserito 3
    For i = 5 To 7
      Cells(Target.Row, i) = "saldato" 'in tutte le celle metti saldato
    Next i
  End If
End If
End Sub



Nelle celle dell'intervallo B:D invece di inserire ok inserisci il numero 1 o 2 oppure 3. Nelle cella dell'intervallo E:G vedrai, di volta in volta, il credito residuo ovvero "saldato".

Fai sapere. Ciao,
Mario

Ciao, ti ringrazio per l'aiuto. In realtà ho già applicato una funzione che prevede i numeri e fa esattamente ciò! Io vorrei (sia per comodità che per conoscenza) una funzione che tenga conto della variabile del tempo, considerando quale "ok" è stato messo prima.

Post: 782
Registrato il: 24/06/2015
Città: CATANIA
Età: 80
Utente Senior
Excel2019
OFFLINE
07/03/2020 18:30

Ciao
Non puoi (salvo un complicatissimo ricorso a particolari istruzioni, che non mi sembra il caso di applicare alle tue esigenze).

Si potrebbe fare con "OK1", OK2" e "OK3" ma mi sembra più macchinoso.

Ciao,
Mario
Vota:
Amministra Discussione: | Chiudi | Sposta | Cancella | Modifica | Notifica email Pagina precedente | 1 | Pagina successiva
Nuova Discussione
 | 
Rispondi
Cerca nel forum
Tag discussione
Discussioni Simili   [vedi tutte]
Feed | Forum | Bacheca | Album | Utenti | Cerca | Login | Registrati | Amministra
Tutti gli orari sono GMT+01:00. Adesso sono le 14:31. Versione: Stampabile | Mobile | Regolamento | Privacy
FreeForumZone [v.6.1] - Copyright © 2000-2024 FFZ srl - www.freeforumzone.com