[ spirit_face @ 23.09.2014. 23:56 ] @
Pravim neki program za singularno izravnanje geodetskih mreža. Suština je da mi je potrebno višestruko uslovljavanje da bih u odgovarajuće polje matrice uneo odgovarajući podatak. Pokušavam sa ugnješdenim IF naredbama, ali ne mogu da održim konce jer je previše uslova.
Da li postoji neki editor pomoću koga bih mogao da napiše odgovarajuću petlju, a da je zatim ubacim u excel.

Ovo je kod koji sam napravio, ali se gubim u zagradama i separatorima:
Code:

=IF(C41=K2;
    IF(B41="PRAVAC";
        VLOOKUP(CONCATENATE(C41;"-";D41);$B$26:$F$37;5;FALSE);
            IF(B41="DUZINA";
                VLOOKUP(CONCATENATE(C41;"-";D41);$B$26:$D$37;3;FALSE);
                    VLOOKUP(CONCATENATE(C41;"-";D41);$B$26:$F$37;5;FALSE)-VLOOKUP(CONCATENATE(C41;"-";E41);$B$26:$F$37;5;FALSE);
            )
    );
    IF(D41=K2;
        IF(B41="PRAVAC";
            VLOOKUP(CONCATENATE(D41;"-";C41);$B$26:$F$37;5;FALSE);
                IF(B41="DUZINA";
                    VLOOKUP(CONCATENATE(D41;"-";C41);$B$26:$D$37;3;FALSE);
                        VLOOKUP(CONCATENATE(D41;"-";C41);$B$26:$F$37;5;FALSE);
                )
            );
    IF(E41=K2;
        IF(B41="PRAVAC";
            VLOOKUP(CONCATENATE(E41;"-";C41);$B$26:$F$37;5;FALSE);
                IF(B41="DUZINA";
                    VLOOKUP(CONCATENATE(E41;"-";C41);$B$26:$D$37;3;FALSE);
                        -VLOOKUP(CONCATENATE(E41;"-";C41);$B$26:$F$37;5;FALSE);
                )
            )
    )
    )
    0.00000
)


Kod sam pokušao da napiše u Notepad++, pa da zatim izbrišem ve razmake i smestim ga u ćeliju excel-a, ali uporno grešim...
[ FOX028 @ 24.09.2014. 08:56 ] @
Imas mogucnost da u VBA napises funkciju kojoj bi definisao potrebne argumente i kasnije je pozivas kao bilo koju vec ugradjenu funkciju u Excel-u. Funkciju pises u Modulu. Ako ne budes uspeo da odradis ovo okaci tvoj Excel fajl pa da pokusamo da resimo problem. U ovom tvom kodu koji si napisao sa zagradam mislim da je sve OK, ali imas previse uslova nego sto Excel podrzava, zato ti je po meni jednostavnije da napises funkciju u VBA.

[Ovu poruku je menjao FOX028 dana 24.09.2014. u 10:07 GMT+1]
[ 3okc @ 24.09.2014. 09:14 ] @
Za formule ove složenosti je bolje osloniti se na VBA.

Ili, ako je to problem, možda da koristiš pomoćne ćelije i imenovane opsege. Ovde koliko vidim "čitaš" iz tabele vrednosti a to se lakše kontroliše kada te vrednosti držimo izvan formule.

Što se belina u formuli tiče, njih ne moraš uklanjati ako ti olakšavaju čitanje; npr u mom Excel 2010 ostaju kako ih ukucam, jedino što formulu naknadno moram da listam kad je ovako duga.

Koliko mogu da primetim, kod tebe je greška u sintaksi jer si kucao tačku-zarez iza poslednjeg IF() argumenta.
Tačka-zarez je separator između dva argumenta pa tako ispada da tražiš i četvrti argument, koji ne postoji.

Ovo je nešto jednostavnije, ali verujem da može još kraće:
Code:
=IF(C41=K2;
        IF(B41="PRAVAC";
                VLOOKUP(C41&"-"&D41;$B$26:$F$37;5;FALSE);
                        IF(B41="DUZINA";
                                VLOOKUP(C41&"-"&D41;$B$26:$D$37;3;FALSE);
                                        VLOOKUP(C41&"-"&D41;$B$26:$F$37;5;FALSE)-VLOOKUP(C41&"-"&E41;$B$26:$F$37;5;FALSE)
                        )
        );
        IF(D41=K2;
                IF(B41="PRAVAC";
                        VLOOKUP(D41&"-"&C41;$B$26:$F$37;5;FALSE);
                                IF(B41="DUZINA";
                                        VLOOKUP(D41&"-"&C41;$B$26:$D$37;3;FALSE);
                                                VLOOKUP(D41&"-"&C41;$B$26:$F$37;5;FALSE)
                                )
                        );
        IF(E41=K2;
                IF(B41="PRAVAC";
                        VLOOKUP(E41&"-"&C41;$B$26:$F$37;5;FALSE);
                                IF(B41="DUZINA";
                                        VLOOKUP(E41&"-"&C41;$B$26:$D$37;3;FALSE);
                                                -VLOOKUP(E41&"-"&C41;$B$26:$F$37;5;FALSE)
                                )
                        )
        )
        )
       )