Avatar billede ingolf Nybegynder
22. april 2010 - 15:29 Der er 15 kommentarer og
1 løsning

Sum af ulige/lige pladser i 12 cifret tal

Hvordan udtrækker jeg summen af tallene på de lige og ulige pladser i et 12 cifret tal?

eks:
123456789123

ulige pladser
1+3+5+7+9+2=27

Lige pladser
2+4+6+8+1+3=24
Avatar billede supertekst Ekspert
22. april 2010 - 15:51 #1
VBA:
Sub tal12Sum()
Dim ulige As Byte, lige As Byte
    tal = 123456789123#

    ulige = 0
   
    For f = 1 To 12 Step 2
        ulige = ulige + Int(Mid(CStr(tal), f, 1))
    Next f
   
    For f = 2 To 12 Step 2
        lige = lige + Int(Mid(CStr(tal), f, 1))
    Next f
 
   
End Sub
Avatar billede ingolf Nybegynder
22. april 2010 - 16:03 #2
supertekst
VBA har jeg ikke kendskab til.
Har du mulighed for at skrive det sådan, at det kan sættes det ind i min forespørgsel?
Avatar billede supertekst Ekspert
22. april 2010 - 18:19 #3
Hvad skal det anvendes til?
Avatar billede ingolf Nybegynder
22. april 2010 - 22:07 #4
supertekst
Det skal bruges til at udregne et kontroltal der senere skal tilføjes det 12 cifrede tal i enden.
Avatar billede supertekst Ekspert
22. april 2010 - 23:00 #5
Ok - vil det så sige, at der er en forespørgsel med et antal poster, hvor disse beregninger skal udføres?
Avatar billede ingolf Nybegynder
22. april 2010 - 23:46 #6
supertekst
Ja beregningen ønsker jeg skal ske i en forespørgsel for hver post.
Avatar billede supertekst Ekspert
23. april 2010 - 08:54 #7
Ok - vi nærmer os.. Må det ske efter at forespørgslen er kørt?

Hvis Ja - prøv at beskriv opbygningen af denne (Fsp)her eller send filen - @-adr. under min profil
Avatar billede ingolf Nybegynder
23. april 2010 - 10:43 #8
supertekst

Grundlæggende er der en tabel med 4 talfelter som vi kan kalde [felt1], [felt2], [felt3] og [felt4].

I forespørgslen skal de 4 felter sammensættes til et felt. Dette tal kommer derefter op på 12 cifrer. Dette felt kalder vi [12cifrer]. Feltet er sammensat sådan i forespørslen:
12cifrer:[felt1] & [felt2] & [felt3] & [felt4]

Derefter ønsker at lave et felt med summen af tallene på de ulige pladser. Vi kalder feltet [SumUlige]

Bagefter laver jeg et felt med summen af tallene på de lige pladser. Det felt kalder jeg [SumLige]

Jeg har forsøgt at anvende sum((mid[12cifrer];1;1)+(mid[12cifrer];3;1)+ o.s.v.) for feltet [SumUlige], men løber ind i problemer. Det er som om at den ikke tolker det 12 cifrede tal som et tal.

? Så det er her jeg er løbet ind i en mur.
Avatar billede supertekst Ekspert
23. april 2010 - 10:51 #9
Ok - vender tilbage senere
Avatar billede supertekst Ekspert
24. april 2010 - 14:09 #10
SumUlige: Int(Mid([12cifrer];1;1))+Int(Mid([12cifrer];3;1))+Int(Mid([12cifrer];5;1))+Int(Mid([12cifrer];7;1))+Int(Mid([12cifrer];9;1))+Int(Mid([12cifrer];11;1))

giver = 27

Så skulle princippet også kunne anvendes for SumLige
Avatar billede ingolf Nybegynder
25. april 2010 - 22:37 #11
supertekst

Jeg skal se, om jeg kan få afprøvet dit forslag i morgen mandag på arbejde. Det ser interessant ud.

Hvad er funktionen Int egentlig i den her forbindelsen?
Avatar billede supertekst Ekspert
25. april 2010 - 22:43 #12
Konvertering til heltal
Avatar billede ingolf Nybegynder
25. april 2010 - 22:53 #13
supertekst

Vil jeg ikke få det samme uden Int i formlen? Der er jo ingen komma i det 12 cifrede tal.
Avatar billede supertekst Ekspert
26. april 2010 - 08:02 #14
Du skriver i #8:
"Jeg har forsøgt at anvende sum((mid[12cifrer];1;1)+(mid[12cifrer];3;1)+ o.s.v.) for feltet [SumUlige], men løber ind i problemer. Det er som om at den ikke tolker det 12 cifrede tal som et tal."


Mid() anvendes på datatypen String (Tekst). Int konverterer til tal for at der kan dannesen sum.
Avatar billede ingolf Nybegynder
26. april 2010 - 08:58 #15
supertekst
Dit forslag fungerer fint. Jeg sender dig de 200. Tak for hjælpen.
Avatar billede supertekst Ekspert
26. april 2010 - 09:05 #16
Fint & selv tak...
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester