[ armagedon32 @ 31.03.2022. 20:31 ] @
Potrebno mi je da pomoću više uslova identifikujem jednu jedinstvenu grupu podataka.
Kada je identifikujem onda se prikazuju podaci iz te grupe podataka a kasnije menjanjem zadatih uslova dobijam parametre od neke druge grupe podataka.
[ armagedon32 @ 12.04.2022. 06:39 ] @
Vidim bilo je pregleda ali ne i nekog odgovora koji bi mi mogao pomoći, verovatno sam ja bio nejasan pa ću pokušati malo da pojasnim problem.

Imam 5 ulaznih podataka, od čega 3 su po dve mogućnosti, 2 sa po 3 mogućnosi, a 6-ti je sa 5 mogućnosti, ukupno 15 mogućih ulaznih podataka. Sobzirom da postoji mnogo kombinacija da li je moguće da se one ne proveravaju sve nego da se nekako hijerarhijski ograniči pretraga za istim.
U svim scenarijima postoji 2-3 ista dokumenta a ostali se dobijaju u zavisnosti od kombinacije ulaznih podataka.

Problem mi je kako identifikovati jedinstven slučaj i doći do dokumenata koji taj scenario sadrži. Nadam se da sam malo jasniji a dodatna pojašnjenja u fajlu.

Hvala unapred za eventualnu buduću sugestiju.
[ djoka_l @ 12.04.2022. 10:00 ] @
I dalje si nejasan.
Prvo kada izbrojim tvoje mogućnosti dolazim do 17, a ne do 15 podataka.
Kada izračunam koliko je mogućih kombinacija, dolazim do 360, a nemam ni najmanju predstavu:
1. koji je skup iz kojih biram podatke
2. koje su dozvoljene kombinacije
3. nigde nema definisanih tabela sa šifarnicima uslova.

Ne mogu čak ni da pogodim gde se stavljaju uslovi (možda, desno od onih strelica, ako bih morao da pogađam)

Ono što se zove "baza", po meni nije nikakva baza nego još jedan izveštaj.
Nemaš nikakve tabele, sve je podešeno da izgleda lepo, a ne da bude funkcionalno.
Nije mi jasno ŠTA treba da dobiješ kada postaviš nekakve uslove.

Ne zameri, neizgrađen je jedna reč, a ne dve reči (ne izgrađen), jer se pridevi sa negacijom pišu zajedno. "Ne" se piše odvojeno od glagola (osim u 4 slučaja) a UVEK spokjeno sa pridevom (nejasan, neodlučan, neizgrađen, nestručan itd.)
[ armagedon32 @ 12.04.2022. 11:46 ] @
Hvala na odgovoru uz napomenu da ne tražim konačno rešenje nego savet kako do najlakšeg načina doći do mogućeg rešenja, moje poznavanje excela je vrlo skromno.

U karticama BAZA se nalazi spisak dokumenata koji mi služe za pravljenje lista i dodatnih fiksnih podataka, tipa ko izdaje dokument i koliko košta a najmanji mi je problem kako sam je nazvao.
Uslovi, da moja greška, jeste 17 mogućih i kako kažeš mnogo kombinacija a sve su moguće,
1. Na kartici "krajnji dokument" je obrazac finalnog dokumenta, odnosno uslovi na kartici "Ulazni podaci" (nisu isti ali je ova merodavnija kartica).
2. Ne znam o kakvim se tabelama govori a što se tiče kombinacija sve su moguće, po jedna od dole navedenih 5 grupa.
USLOVI:
VLASNIK PARCELE: Da/Ne
STANJE OBJEKTA: Izgrađen/Neizgrađen
SPROVEDBENI PLAN: Da/Ne
BRUTO POVRŠINA: do 200 m2 / od 200 do 400 m2 / preko 400 m2
TIP OBJEKTA: Pomoćni / Stambeni / Stambeno-poslovni / Poslovni / Privredni

Nadam se da će nova kartica ODGOVOR biti jasnija od reči a u 2 rečenice, meni je problem sledeći.

1. Automatsak identifikacija svakog potrebnog dokumenta za sve moguće uslove
2. Sortiranje dokumenata koji treba da se pojave na "krajnjem dokumentu" jer za jedan uslov imam 5 a za drugi 10 dokumenata a oni treba da se automatski prikazuju bez praznih redova.

Ako sad nisam uspeo da objasnim problematiku, odustajem.

P.S. U kartici ODGOVOR se vidi moj pokušaj da identifikujem dokumnta..
[ djoka_l @ 12.04.2022. 22:47 ] @
Uf, stavio si me na muke, ali ne zato što je problem težak, nego zbog nejasne formulacije problema i zbog loše organizacije tabela.
Napravio sam jednu VBA fuknciju (macro) i na listu koji se zove Tabela uslova napunio sam neke bezvezne podatka da ti demonstriram logiku.

Dakle, u koloni "O" se nalaze odgovori (referencirane vrednosti) sa lista "ODGOVORI"
U kolonoma A do E se nalaze podaci sa nazivima dokumenata, izdavaocem dokumenta i cenom.
U koloni F se poziva moja funkcija, a u kolonoma G do K se nalaze uslovi.

Ako u koloni stoji "*" to znaci da se uslov poklapa sa bilo kojom vrednoscu odgovarajuceg odgovora
Ako u kolini stoji neka konkretna vrednost, onda mora da se poklopi odgovor i ta vrednost.
Moze da stoji i lista vrednosti razdvojena zarezima i bez dodatnih razmaka, pa se uslov i odgovor poklapaju ako je odgovor jedna od vrednosti u listi

Ovde je makro, a u prilogu je excel

Code:

'Funkcija koja poredi listu odgovora u odnosu na postavljene uslove
'Lista odgovora je u jednoj koloni, a lista uslova u jednom redu
'Broj redova uslova MORA biti isti kao i broj kolona uslova

Function CheckAll(Values As Range, Conditions As Range) As Boolean

    'Prvo proveriti da li su opsezi istih dimenzija
    If Values.Rows.Count <> Conditions.Columns.Count Then
        'MsgBox "Broj redova u opsegu ulaznih podataka mora biti isti kao i broj kolona uslova!"
        CheckAll = CVErr(xlErrNA)
        Return
    End If

    If Values.Columns.Width <> 1 And Conditions.Rows.Count <> 1 Then
        'MsgBox "Opseg ulaznih podataka mora biti u jednoj koloni, a opseg vrednosti uslova u jednom redu!"
        CheckAll = CVErr(xlErrNA)
        Return
    End If
    
    'Pretpostavimo da su uslovi ispunjeni
    CheckAll = True
    
    'Prolaz kroz listu odgovora i uslova
    For i = 1 To Values.Rows.Count
    
        'Ako uslov nije "*" onda treba dalja provera, inace se pokalapa uslov sa odgovorom
        If Conditions.Cells(i) <> "*" Then
            
            'Ako odgovor i uslov nisu isti, onda je mozda u uslovu data lista prihvatljivih odgovora
            'Ako je u uslovima lista vrednosti, treba uporediti sve vrednosti
            If Conditions.Cells(i) <> Values.Cells(i) Then
                
                Dim a() As String
                a = Split(Conditions.Cells(i), ",")
                
                'U ovom momentu nisu se jos uvek poklopili uslov i vrednost, pa pretpostavljamo da je rezultat false
                CheckAll = False
                'Prolaz kroz listu uslova
                For Each x In a
                    If x = "*" Or x = Values.Cells(i) Then
                        'Ura! Poklopio se uslov sa odgovorom, nema potrebe da dalje idemo kroz listu
                        CheckAll = True
                        Exit For
                    End If
                Next
                
            End If
            
            'Ako nismo pronasli odgovarajuce poklapanje tekuceg uslova sa tekucom vrednoscu,
            'nema potrebe da se dalje proveravaju parovi uslova i vrednosti
            If Not CheckAll Then Exit For
            
        End If
    Next i
[ armagedon32 @ 15.04.2022. 08:10 ] @
Uh, šta reći a ne zaplakati.

Moje znanje excel-a je skromno a da ne pričam o VB. Probao sam otvoriti poslati fajl ali mi prijavljuje grešku a i kopiranje poslatog koda mi takođe ne ide od ruke.

Kako vas ne bih nervirao mojim ne znanjem, molim za malu pomoć.
1. Kako korak po korak da ubacim kod u VB?
2. Kako da kopiram rang ćelija iz jedne kartice u drugu ali da mi ne kopira prazne ćelije.

Na netu sam našao ovaj kod koji bi trebalo prepraviti da uzme u opseg samo željeni rang ćelija koje se kopiraju u određeni rang ćelija na drugom listu.

P.S. kada kopiram ovaj kod prijavljuje mi grešku u 3. redu. Ne znam da li prvo treba kreirati dugme koje pokreće kod pa ga vezati sa makroom ili može i obrnuto kao na sledećem videu.
Primer

Hvala unapred za pomoć

Code:

syb copyNonBlankData()
Dim erow As Long, lastrow As Long, i As Long

lastrow = Sheet1.Cells(Rows.Count, 1).End(x1Up).Row

For i = 2 To lastrow
If Sheet1.Cells(i, 1) <> "" Then
Sheets("Prva").Range(Cells(i, 1), Cells(i, 2)).Copy
Sheets("Druga").Activate
erow = Sheet2.Cells(Rows.Count, 1).End(x1Up).Offset(1, 0).Row
ActiveSheet.Paste Destination:=Sheets("Druga").Range(Cells(erow, 1), Cells(erow, 2))
Sheets("Prva").Activate
End If
Next i

Application.CutCopyMode = False

End Sub
[ Jpeca @ 17.04.2022. 10:01 ] @
Ako imaš želju (koju podržavam) da koristiš VBA pogledaj temu Rad sa makroima, a možeš naći i neke uvodne tjutorijale na youtube npr. https://www.youtube.com/watch?...Qk&ab_channel=LeilaGharani

Za konkretan problem VBA je moguće rešenje, ali nije neophodan - moguće je rešiti i uz pomoć formula

1/ Najjednostavnije, aktuelne verzije Excel imaju FILTER funkciju (dynamic array) koja baš za to služi Vidi detaljnjije
Code:
=FILTER(Prva!E11:E30,NOT(ISBLANK(Prva!E11:E30)))


2/ Ako radiš sa starijoj verziji možeš koristiti array formulu
Code:
=INDIRECT("Prva!E"&SMALL(IF(LEN(Prva!$E$11:$E$30)=0, "", ROW($11:$30)), ROW(A1)))

Formula se završava sa CTRL+Shift+Enter

Objašnjenje:
IF vraća broj reda u slučaju da je ćelija neprazana, odnosno prazan string u suprotnom
Zatim sa SMALL od tako dobijenog niza nalazim 1, 2, 3 itd najmanju vrednost - broj reda iz kog treba da preuzmemo sadržaj.

Ideja je preuzeta sa Tom Tutorials, a postoje i drugačije varijante sa nizovima ako želiš da potražiš na netu.

3/ Ili i bez array formule uz formranje pomoćne kolone H sa rednim brojem, pa koristeći INDEX/MATCH - vidi prilog
Code:
=IFERROR(INDEX(Prva!$E$11:$E$30,MATCH(ROW()-ROW($J$14),Prva!$H$11:$H$30,0)),"")



[Ovu poruku je menjao Jpeca dana 17.04.2022. u 21:07 GMT+1]
[ todra @ 18.04.2022. 15:21 ] @
Vidi da li ti ovako nešto završava posao.