Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Uparivanje podataka

[es] :: Office :: Excel :: Uparivanje podataka

[ Pregleda: 1470 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.dynamic.sbb.rs.



+322 Profil

icon Uparivanje podataka02.08.2018. u 16:51 - pre 69 meseci
U prilogu posta nalazi se tabela sa objašnjenjem zadatka.
Molim za pomoć.
Prikačeni fajlovi
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.dynamic.sbb.rs.



+322 Profil

icon Re: Uparivanje podataka02.08.2018. u 19:51 - pre 69 meseci
Uspeo sam da se iskobeljam kad sam probao sa OR. Nije mi logika kod matričnih formula baš 100% jasna pa sam probao obrbutim inženjeringom, šta bi to moglo po logici stvari da fali.
Naime sada sve radi kako treba, a zamolio bih ukoliko neko ima bolju formulu, koja će se brže izvršavati da podeli rešenje ovde pošto nisam siguran koliko je moja formula optimizovana, pošto će se pretraga vršiti kroz jako veliki broj redova.

Rešenje u prilogu.
Prikačeni fajlovi
 
Odgovor na temu

Ivek33

Član broj: 66174
Poruke: 2898



+66 Profil

icon Re: Uparivanje podataka03.08.2018. u 14:54 - pre 69 meseci
Ne znam zašto si baš odredio da '0' označava ako u banci postoji otvoren račun. Meni je logičnije da nula predstavlja da u banci nije otvoren račun.

Probaj ovu formulu ispod (testiraj na svom primjeru sa puno redova)
Code:
=SUMPRODUCT(--ISNUMBER(SEARCH($F3&G$2;$A$3:$A$18&LEFT($B$3:$B$18;3))))

Postavi je u G3 i kopiraj desno pa sve prema dolje.
Prikačeni fajlovi
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.dynamic.sbb.rs.



+322 Profil

icon Re: Uparivanje podataka13.08.2018. u 17:39 - pre 69 meseci
Tek sada vidim odgovor na temu.
Ona nula mi je trebala pošto je to deo jedne veće matematike. Računarski gledano jedinica je true a nula false ali mi je ovde bilo zgodno pošto računam naknadu za platni promet, pošto ako plaćaš sa iste banke u kojoj i tvoj poverilac ima račun, naknada je 0 tačnije bez naknade. Tako mi je bilo zgodno da preračunam koliko iznosi naknada sa svake banke posebno, a ako još imam račun baš u toj banci sa kojom plaćam rezultat pomnožim sa 0 da bih dobio naknadu od 0 dunara. Ako pak nemam takvu banku rezultat ću pomnožiti sa 1, pa će naknada ostati kakva je bila i ranije.

Možda okačim primer jer baš lepo radi, osim što ona moja budževina od formule iznad usporava računanje solvera pa pre obračuna te formule prelepim sa paste value. Na malom uzorku se ne primeti ali na velikom da.

Isprobam tvoju varijantu...

EDIT:
Ne, obe formule su podjednako spore, ali valjda tako mora, ima 12000 tekućih računa a u finalnoj verziji biće ih 2-3 puta više.
 
Odgovor na temu

Jpeca
Predrag Jovanović
poslovni analitičar
Gowi
Pančevo

Moderator
Član broj: 25683
Poruke: 2268
89.216.49.*

Sajt: www.gowi.rs


+109 Profil

icon Re: Uparivanje podataka14.08.2018. u 12:44 - pre 69 meseci
Koliko sam probao formula u primeru Ivek33 mogla bi da se "skrati" pod uslovom da šifre banaka uneseš kao tekst (apostrof ispred):
Code:
=SUMPRODUCT(--(LEFT($B$3:$B$18;3)=G$2);--($A$3:$A$18=$F3))

pa probaj da li je nešto brže. Za obrnuto logiku 1 ->0 i 0 ->1 dodaj --NOT(...) ili --(...=0)
Nije to loše Rembrante, samo što ne bi dodao još malo boje?
 
Odgovor na temu

Ivek33

Član broj: 66174
Poruke: 2898



+66 Profil

icon Re: Uparivanje podataka15.08.2018. u 16:08 - pre 69 meseci
Citat:
Blue82:Ne, obe formule su podjednako spore, ali valjda tako mora, ima 12000 tekućih računa a u finalnoj verziji biće ih 2-3 puta više.
A da probaš po Jpecinom prijedlogu ovu formulu ispod (malo je modificirana u odnosu na Pecin prijedlog)
Code:
=--NOT(SUMPRODUCT(--($A$3:$A$18&LEFT($B$3:$B$18;3)=$F3&G$2)))


btw: pozdrav za Jpecu
 
Odgovor na temu

Blue82
dipl. ecc.

Član broj: 165981
Poruke: 838
*.static.isp.telekom.rs.



+322 Profil

icon Re: Uparivanje podataka16.08.2018. u 07:28 - pre 69 meseci
Isto je momci sa mojom i vašim formulama.
Kada se postave sve formule, potrebno je 5,61s da se preračunaju što nije puno ali...

Kada bilo gde u tabeli (nevezano za ove formule) unesem bilo šta, da bi se izmena videla potrebno je opet tih 5,61s. Dakle šta god da se radi u tom sheet-u on osveži sve formule tako da svaki rad postane mučan. Zato ja kada se jednom preračuna iznos naknada uradim paste value preko tih formula da bih ih poništio, da bi se dalje moglo raditi. Mislim da nema druge mogućnosti.
 
Odgovor na temu

bokinet

Član broj: 29844
Poruke: 574



+50 Profil

icon Re: Uparivanje podataka16.08.2018. u 08:40 - pre 69 meseci
Probaj da prebacis te formule u VBA f-je i da koristis nesto kao sto je dole dat primer f-je... i probaj da vidis kakve ce performanse biti


Code:


' Example

function FooFunction() as long

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False

' ---> Place your code here <---

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True

End Function

 
Odgovor na temu

Ivek33

Član broj: 66174
Poruke: 2898



+66 Profil

icon Re: Uparivanje podataka16.08.2018. u 12:27 - pre 69 meseci
Ja sam htio dati isto prijedlog za VBA.
Možda da zamoliš nekoga da ti napiše VBA macro ali ne striktno vezan za broj redova i stupaca gdje se nalaze uvjeti i rezultati, već koji ćeš ti kasnije ti moći prilagođavati tvojim potrebama organizacije podataka.

Puno je to redova (cca 30000). Naravno da Excel svaki puta mora vršiti proračune i proći kroz svaki red.
 
Odgovor na temu

Ivek33

Član broj: 66174
Poruke: 2898



+66 Profil

icon Re: Uparivanje podataka16.08.2018. u 12:59 - pre 69 meseci
@Blue82
Mislio sam na ovako nešto (s obzirom na prijedlog @bokinet.
Probao sam i solidno brzo radi, ali ja nisam imao max redova podataka.
Ovo ispod je klasik VBA macro (vjerojatno može i brže). Ovaj je snimljen u Excelu.

Code:
Sub Kalkulacija()
'Function FooFunction() As Long

Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.DisplayStatusBar = False
Application.EnableEvents = False

    Range("G3").Select
    ActiveCell.FormulaR1C1 = _
        "=IF(RC[-1]="""","""",--NOT(SUMPRODUCT(--(R3C1:R30000C1&LEFT(R3C2:R30000C2,3)=RC6&R2C))))"
    Range("G3").Select
    Selection.AutoFill Destination:=Range("G3:G30000"), Type:=xlFillDefault
    Range("G3:G30000").Select
    Selection.AutoFill Destination:=Range("G3:J30000"), Type:=xlFillDefault
    Range("G3:J30000").Select
    Range("G3").Select

Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.DisplayStatusBar = True
Application.EnableEvents = True

End Sub
 
Odgovor na temu

[es] :: Office :: Excel :: Uparivanje podataka

[ Pregleda: 1470 | Odgovora: 9 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.