Iskanje in izračun TXT

Pomoč pri izdelavi makrov
Odgovori
ROBERT
Prispevkov: 29
Pridružen: Sr Sep 14, 2005 9:55 am

Iskanje in izračun TXT

Odgovor Napisal/-a ROBERT »

Pozdravljen

Z vašo pomočjo sem izdelal program, kjer dodajam in prebiram podatke iz TXT zapisov. Nastal pa je problem, ko te podatke iščem oziroma seštevam po kriterijih, namreč imam kodo 1, ko hočem sešteti vse vrednosti pod kodo 1, mi sešteje tudi zapise, kjer je 11, 15, skratka, vsi zapisi ki ustrezajo pravi vrednosti 1.

Kako lahko odpravim to težavo?

Hvala.
Stenly
Prispevkov: 223
Pridružen: Sr Jul 27, 2005 11:29 pm

Odgovor Napisal/-a Stenly »

Pozdravljeni

Če vas prav razumem, vam program pri seštevanju sešteva številke in besede (kot št.).
Mislim, da vam excel iz text datoteke lahko potegne le text (pa čeprav je viden kot št.).
Skušajte polja, ki jih seštevate bolj selekcionirati.

Lp
admin
Site Admin
Prispevkov: 3691
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

Pozdravljeni,

Brez podrobnejše razlage (delčka kode) vam ne morem popolnoma nič pomagati, ker ne vem na kakšen način vi berete te podatke. Zavedati se namreč morate, da računalnik pač prebere nek podatek, interpretacija takšnega podatka pa je v vaši domeni!
lp,
Matjaž Prtenjak
Administrator
ROBERT
Prispevkov: 29
Pridružen: Sr Sep 14, 2005 9:55 am

Odgovor Napisal/-a ROBERT »

Prilagam del kode, kjer upam, da se skriva napaka.

Sešteva mi vse zapise kjer se prvi zapis ujema z iskanim kriterijem.
Če iščem po neznanko 1, mi sešteje tudi vrednosti neznanke 12,15, skratka vse kar se ujema na 1,11,12...15,19

Koda: Izberi vse

SkupnaCena = 0

Open "c:\nafta.txt" For Input As #1

Dim isci As String
isci_leto = Text1
isci_mesec = Text2
isci_stevilka = Text3

While Not EOF(1)
Input #1, datum, stevilka, poraba, mesec, leto

If (InStr(leto, isci_leto)) And (InStr(mesec, isci_mesec)) And (InStr(stevilka, isci_stevilka)) Then

SkupnaCena = SkupnaCena + poraba
End If
Wend




Upam, da bomo to rešili

Hvala...
admin
Site Admin
Prispevkov: 3691
Pridružen: Sr Jul 20, 2005 10:06 pm

Odgovor Napisal/-a admin »

:), :)

Pa ste si pogledali kaj točno naredi funkcija InStr
. Ta funkcija vrne resnico (True), če se drugi niz pojavi v prvem in točno to vam tudi naredi. 1 se pojavi v 12 in 1 se pojavi tudi v 21 pa v 31 in 11.... Če želite najti samo dneve s številko 1 pač morate to zapisati:

Koda: Izberi vse

If leto = isci_leto mesec = isci_mesec and stevilka = isci_stevilka Then
...
End If
To je to!

No probleme bi lahko imeli tudi zaradi različnih interpreacij teksta in števil. Ker v vašem primeru operirate izključno s števili bi bilo celo bolje če pred preverjanjem elemente tudi zares pretvorite v števila:

Koda: Izberi vse


Dim isci As Integer
isci_leto = cint(Text1)
isci_mesec = cint(Text2)
isci_stevilka = cint(Text3)

If cint(leto) = isci_leto cint(mesec) = isci_mesec and cint(stevilka) = isci_stevilka Then
...
End If
lp,
Matjaž Prtenjak
Administrator
Odgovori