Problema LibreOffice Calc

Ciao a tutti,
ho un problema con una formula Calc che avevo già usato e che adesso non
riesco a far funzionare.

Scopo del file: gestione degli ausili per l'incontinenza in casa di riposo.

Il foglio Prodotti contiene l'elenco di tutti gli ausili per
l'incontinenza con la quantità di pezzi in ogni confezione e la quantità
di confezioni in ogni scatolone
Il Foglio Residenti3Piano contiene l'elenco di tutti gli anziani del
piano specificato, quale ausilio usa di giorno (Colonna GIORNO) e
quanti, quale ausilio usa la notte (Colonna NOTTE) e quanti, quante
traverse (Colonna TRAVERSA) e mutande a rete (Colonna MUTANDE A RETE)
usa al giorno. I prodotti nelle colonne GIORNO, NOTTE, TRAVERSA e
MUTANDE A RETE sono selezionabili con un menù a tendina.
Il foglio Consumo giornagliero contiene quanti prodotti vengono usati al
giorno e qui sorge il problema.

La Colonna A contiene l'elenco di tutti i prodotti la colonna B la
quantità che ogni giorno viene utilizzata.
La seguente formula (non funzionante) la uso da B5 a B47
=SE(A5="";0;SE(A5="";"";CERCA.VERT(A5;$Residenti3Piano.$E$5:$Residenti3Piano.$E$44;6;0)+CERCA.VERT(A5;$Residenti3Piano.$G$5:$Residenti3Piano.$G$44;8;0)))
ovviamente man mano che si scende B5 diventerà B6, B7, ...
L'idea è di verificare il nome del prodotto (siamo nel foglio Consumo
giornagliero) e fare una ricerca verticale nella colonna GIORNO da E5 a
E44 e riportare il valore della quantità subito a destra nella cella B5
e sommarlo con lo stesso procedimento per la colonna NOTTE
Ma le celle mi danno il seguente errore Err:502
Se tutto funzionasse le celle:
Consumo giornagliero.B6 dovrebbe avere valore 15
(=Residenti3Piano.F5+Residenti3Piano.H5)
Consumo giornagliero.B42 dovrebbe avere valore 2 (=Residenti3Piano.F6)
Consumo giornagliero.B15 dovrebbe avere valore 1 (=Residenti3Piano.H6)
Consumo giornagliero.B13 dovrebbe avere valore 8
(=Residenti3Piano.F7+Residenti3Piano.H7)

Stesso concetto da B48 a B53 (sempre nel foglio Consumo giornagliero) ma
la formula è più semplice in quanto non c'è giorno e notte e ho usato:
=SE(A48="";0;SE(A48="";"";CERCA.VERT(A48;$Residenti3Piano.$K$5:$Residenti3Piano.$K$44;12;0)))
Se tutto funzionasse le celle:
Consumo giornagliero.B52 dovrebbe avere valore 7
Consumo giornagliero.B53 dovrebbe avere valore 12
Consumo giornagliero.B48 dovrebbe avere valore 3
Consumo giornagliero.B49 dovrebbe avere valore 10

Ho verificato l'errore Err:502 = Argomento non valido - Argomento della
funzione non valido. Ad esempio, un numero negativo per la funzione
SQRT(), per questo usate IMSQRT().
https://help.libreoffice.org/3.5/Calc/Error_Codes_in_Calc/it

Mi rendo conto che la spiegazione è un po ingarbugliata e me ne dispiace.

Dove sbaglio?

O ci sarebbe un'altro modo?

In allegato il file Calc

Grazie
Andrea

attachment.htm (5.06 KB)

Ausili.ods (16.7 KB)

Ciao Andrea,

non è un problema di Calc ma della funzione

CERCA.VERT(A5;$Residenti3Piano.$E$5:$Residenti3Piano.$E$44;6;0)

Tu fai una ricerca è dovrebbe darti l'esito nella 6-ta colonna contato dà E-F-G-H-I-J ma hai evidenziato nella matrice solo E. Prova a metterla cosi:

CERCA.VERT(A5;$Residenti3Piano.$E$5:$Residenti3Piano.$J$44;6;0)

Stessa cosa nella seconda

CERCA.VERT(A5;$Residenti3Piano.$G$5:$Residenti3Piano.$G$44;8;0) li dovrebbe essere E-F-G-H-I-J-K-L = L

CERCA.VERT(A5;$Residenti3Piano.$G$5:$Residenti3Piano.$L$44;8;0)

Saluti da Silandro

attachment.htm (7.09 KB)

Ciao Andrea,

 non so se ho capito bene, ma prova un po:

=SE(A6="";0;SE(A6="";"";CERCA.VERT(A6;$Residenti3Piano.$E$5:$Residenti3Piano.$F$44;2;0)+CERCA.VERT(A6;$Residenti3Piano.$G$5:$Residenti3Piano.$H$44;2;0)))

- La matrix va sempre dalla prima cell in alto a sinistra all'ultima in
basso a destra, includendo tutti i dati che ti servono per la calculazione.
- L'indice va dalla prima colonna della matrix contando a destra.

Ciao,
Andreas

Ciao Andrea!.
Ho provato e penso corretto il caso in "Consumo giornaliero".B5 ; prova con

*=IF(A5="";0;IF(A5="";"";IFNA(VLOOKUP(A5;$Residenti3Piano.$E$5:$Residenti3Piano.$F$44;2;FALSE());0)+IFNA(VLOOKUP(A5;$Residenti3Piano.$G$5:$Residenti3Piano.$H$44;2;FALSE());0)))*

La riscrivo staccando gli elementi:
=IF(A5="";0;
    IF(A5="";"";

IFNA(VLOOKUP(A5;$Residenti3Piano.$E$5:$Residenti3Piano.$F$44;2;FALSE())
            ;0)

attachment.htm (10.6 KB)

Per eliminare gli #NV potresti provare anche:

=SENV(CERCA.VERT(A5;$Residenti3Piano.$E$5:$Residenti3Piano.$F$44;2;0)+CERCA.VERT(A5;$Residenti3Piano.$G$5:$Residenti3Piano.$H$44;2;0);0)

oppure

=SENV(CERCA.VERT(A5;$Residenti3Piano.$E$5:$Residenti3Piano.$F$44;2;0)+CERCA.VERT(A5;$Residenti3Piano.$G$5:$Residenti3Piano.$H$44;2;0);"")

Ciao,
Andreas

Ciao a tutti,
il problema è stato risolto, appena riesco invio una mail riassuntiva
con le soluzione proposte.

Saluti e grazie
andrea

attachment.htm (12.6 KB)

Hallo Andrea

Deine Eingabe der Formel hat so keinen Sinn
=SE(A5="";0;SE(A5="";"";CERCA.VERT(A5;$Residenti3Piano.$E$5:$Residenti3Piano.$E$44;6;0)+CERCA.VERT(A5;$Residenti3Piano.$G$5:$Residenti3Piano.$G$44;8;0)))
Erstmal
Wenn A5="" dann soll er 0 schreiben und dann prüft er es nochmal und soll "" schreiben
komplett überflüssig eine wenn-Funktion kann gelöscht werden und muss sich entscheiden

zu den Cerca.Vert-Funktionen
Da braucht es eine Matrix wenn man in der 6 und 8 spalte das Argument entnehmen möchte zur Zeit ist nur eine Spalte ausgewählt (Textspalte), dann nimm 1.

ich weiss nicht was du genau addieren möchtest aber vielleicht brauchst du den &-Operator wenn du text-veketten möchtest.

Grüße Andreas

attachment.htm (6.59 KB)