| | 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 | |
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 |
|
|