Copiare il contenuto di una cella in un'altra se il valore di un altro campo nella stessa riga è il medesimo

Buonasera a tutti, mi trovo in questa situazione di difficoltà. Ho un database di oltre 2000 campi relativo a servizi di emergenza in cui un determinato evento viene segnato con un ID. Tra i mezzi che intervengono sull’evento (quindi con lo stesso ID), uno o più di questi possono segnare un codice di gravità che va da 0 a 4, è obbligatorio che almeno uno lo segni. Mi trovo nella condizione che in alcuni casi solo uno è segnato ed in altri tutti sono segnati (con lo stesso valore).
Io avrei bisogno di riempire la colonna con i valori di codice di gravità per poi filtrare solo alcuni tipi di mezzi coinvolti e vorrei che se il valore ID è identico allora se il campo è vuoto, questo venga riempito con il codice di gravità del campo corrispondente di una riga con lo stesso id…
Allego un file di esempio per far capire la situazione, mi servirebbe compilare i campi vuoti della colonna “gravità”
esempio.ods

Grazie per il supporto

Nel titolo hai parlato di “un altro campo nella stessa riga”, mentre nell’esempio gli ID uguali occupano righe diverse.

Facendo riferimento al file di esempio, puoi risolvere così:
a) innanzitutto ordini il tuo elenco prima per ID e poi per gravità: così, per ogni ID uguale, comparirà per primo il record che ha registrato il codice di gravità (nel tuo esempio, attualmente, per l’ID 1700883 lo si trova al secondo posto e non al primo, cosa che comprometterebbe il passaggio successivo);

b) poi imposti, in una colonna a parte (ad es. cominciando dalla cella C3), la funzione CERCA.VERT in questo modo (usa la creazione guidata):

CRITERIO DI RICERCA: la cella contenente l’ID, in questo caso A3;

MATRICE: tutta l’area del tuo database, nell’esempio $A$2:$B$12 (i $ sono necessari perché l’area non cambi quando copierai la funzione nelle righe successive); ti conviene comprendere una riga vuota sotto l’elenco (quindi andare a B12, benché l’elenco attuale si fermi a B11) in modo che la matrice si estenda automaticamente quando eventualmente vi inserirai in mezzo nuove righe.

INDICE: 2 (perché, una volta trovato l’ID, la funzione deve andarti a recuperare il valore contenuto nella seconda colonna);

ORDINAMENTO: 0 (perché ti serve recuperare il valore associato a quello specifico ID).

La funzione in C3 risulterà quindi CERCA.VERT(A3;$A$2:$B$12;2;0)

Ricopiando la funzione su tutto il resto dell’elenco, il codice di gravità associato a ciascun ID nel primo record verrà ripetuto anche su tutti gli altri. Il passaggio (a) è necessario perché CERCA.VERT, appena trova il criterio di ricerca, si ferma lì e non esamina gli eventuali altri valori identici successivi; ti è quindi necessario che il codice di gravità sia registrato accanto al primo record di ogni ID.

Grazie mille spiegazione perfetta e funzionale!

Buondì, guardando il tuo esempio e se la tua verisone di libreoffice è superiore alla 6 (o che comunque abbia MAX.PIÙ.SE, non ricordo da quale rilascio è disponibile), in una colonna d’appoggio potresti mettere la formula

=MAX.PIÙ.SE($B$2:$B$9;$A$2:$A$9;A2)

e tirare in basso.
Oppure se la tua versione non ha MAX.PIÙ.SE, potresti usare la formula matriciale

=MAX(SE($A$2:$A$9=A2;$B$2:$B$9))

da inserire nella prima cella, confermare con la combinazione di tasti ctrl+maiuscolo+invio (e non col solo invio) e da copiare e incollare in basso.

Ottimo questa modalità è ancora più comoda