Just nu i M3-nätverket
Gå till innehåll

Enkla summafunktioner, med loop?!?!


M.Mever

Rekommendera Poster

Hej,

jag hade tänkt mig att summera värden på en rad i taget. jag vill då ha en loop som summerar värden i några celler på en rad, sen ska då loopen vara så att den går till nästa rad, osv.

 

raderna som det gäller är rad 6 till rad 26.

problemt är att jag har ett variabelt antal kolumner. Jag har alltid SAMMA startkolumn, nämligen kolumn E, så det första värdet finns i E6 och det ska då summeras med värdet i cellen F6 som, och sedan summeras med värdet i G6... osv TILLS dess att man stöter på NAMNET "SLUT" i en cell.

och det enda man vet om den cellen är att den cellrutan heter ?2 ngt, där ? står för en kolumn exempelvis I2 (i den cellen står alltså SLUT) när den hittar "SLUT" då vet den alltså att summeringen skall göras mellan kolumn E och till I-1,( då inga värden finns i I, men jag vill ha summan där.) och det skall summera rad för dar. och lägga svaret i I.

exempel.

 

E6+F6+G6+H6 = I6 svaret i I6

E7+F7+G7+H7 = I7 osv till rad 26

 

så den första kolumnen är E.

 

i kolumn E och på rad 2 så står det en textsträng, jag har en koll på den textsträngen. efter programmets slut så flyttar jag till nästa kolumn, alltså F2 för att kolla i den.... sen kör programmet sen kollar den i nästa kolumn OSV.... men sen när den hittar texten SLUT i en KOLUMN där raden är 2, DVS exempelvis I2. då ska den summera värdena från rad E6.

 

hoppas någon förstår.

 

Tacksam för svar

 

M.M

 

Länk till kommentar
Dela på andra webbplatser

Range([GRÅ]"e5"[/GRÅ]).[color="#0000ff"]Select[/color]
[color="#0000ff"]For[/color] f = 1 [color="#0000ff"]To[/color] 20
 Radsumma = 0
  Kol_Offset = 0
  [color="#0000ff"]Do[/color]
   Radsumma = Radsumma + ActiveCell.Offset(f, _
   Kol_Offset)
   Kol_Offset = Kol_Offset + 1
  [color="#0000ff"]Loop[/color] Until ActiveCell.Offset(f, Kol_Offset) = [GRÅ]"Slut"[/GRÅ]
 ActiveCell.Offset(f, KolOffset) = Radsumma
[color="#0000ff"]Next[/color]

 

/Pär B

 

Red:

Himla svårt att få till en snygg kodbild...

 

[inlägget ändrat 2005-02-21 11:03:01 av PerboMan]

Länk till kommentar
Dela på andra webbplatser

hej.

jag får fel.

"program - eller objektdefinerat fel" står det.

 

jag vill ha denna koden som du skrev i en funktion eller subrutin, som man kan anropa när eller som anropas automatiskt via makrot sen när man har hämtan en massa värden till det som jag skrev innan... E6 E7 ... och F6, F7... osv..

när alla värden är hämtade och man har stött på SLUT så ska då ett anrop tiill en finktion/subrutin göras, där man då går IGENOM arket... alltså E6+F6+G6 och lägger svaret i samma kolumn som man hittade SLUT..

sen går man ner till nästa rad och gör samma... E7+F7+G7....osv

 

 

hur kan en sån funktion se ut? och ska jag/kan jag läsa in värdena ifrån arket, och addera dem på ngt sätt eller hur ska man göra summeringen... hur ska jag få in värdena?

 

jag har ju hämtad dem förrut... och sen skrivit ut dem i excel... på de rader och kulomner sopm jag nämnde ovan, men nu vill jag addera kolumnerna.. Radvis.

 

M.M

 

Länk till kommentar
Dela på andra webbplatser

Nu måste jag erkänna att jag inte fattar riktigt vad det är du frågar efter.

Den kodsnutt jag totade ihop fungerar så att när du har värden i raderna 6 till 25 (där varje rad avslutas med en cell med värde "Slut") så stegar koden igenom varje rad och summerar värdena. Resultatet skrivs i den cell där det tidigare stod "Slut".

Nu är ju VBA lite petigt med kontrollen, så det måste verkligen stå Slut med stort S.

 

Såg dock att jag skrivit fel på sista raden KolOffset skall vara Kol_Offset.

 

/Pär B

 

Länk till kommentar
Dela på andra webbplatser

ok, då förklarade jag inte riktigt bra

det står inte slut på varje rad, utan det står ENDAST en gång och i en Cell.

på rad 2... men jag vet inte vilken kolumn det står i, eller jag vet men det KAN och kommer skilja sig, så därför måste jag leta upp det.

jag ska se om ´jag kna förklara bättre

 

På rad 2 så finns det "koder" på en del saker, dessa koder är i sin tur filnamn som jag söker i sedan. jag hämtar således information ur dessa filerna, informationen är datavärden som står typ 0,0005 . dessa värden som är olika läggs under just den koden

exempel

DUC KOLUMN E OSV

RAD6 = 0,0056

RAD7 = 0,349

RAD8 = 0,56

RAD9 = 0,120

osv

 

Där DUC är koden och även namnet på den fil jag ska söka i.

DUC står i Cellen E2... och jag börjar alltid i E kolumnen. och de värden som jag hämtar ifrån DUC-filen hamnar på rad E6....till E26 typ.

 

sen så är det samma sak för nästa kod...ex GUC som står i F2... så ska jag hämta värden och lägga dem i F6-F26 typ

Detta är ordnat så den hämtar värdden osv... och den gör det automatiskt... så NÄR datorn FÅR in SLUT i ngn kolumn men på rad 2, Exempelvis G2 där står det SLUT.... då när den får in det så vill jag att det skall ske een uträkning... E6 +F6 och svaret skall läggas i G6....G är ju i den kolumnen som man hade ordet SLUT ovan... i G2..

 

sen ska den gå ner till nästa rad och addera E7+F7 och lägga det i G7...

observera att det inte ALLTID är två värden som skall adderas, det skall i princip vara hur många som helst... men 10 räcker..

 

e du me lite bättre nu??

 

M.M

 

 

Länk till kommentar
Dela på andra webbplatser

[color="#0000ff"]Sub[/color] summering()
  [color="#006400"]' Markera Första rubrikcell[/color]
  Range([GRÅ]"e2"[/GRÅ]).[color="#0000ff"]Select[/color]
  [color="#006400"]' Nollställ variabel[/color]
  Kol_Slut = 0
  [color="#006400"]' Stega igenom rubriker till SLUT hittas[/color]
  [color="#0000ff"]Do[/color]
    Kol_Slut = Kol_Slut + 1
  [color="#0000ff"]Loop[/color] Until ActiveCell.Offset(0, Kol_Slut) = [GRÅ]"SLUT"[/GRÅ]
  [color="#006400"]' Stega igenom rad för rad (3 till 23)[/color]
  [color="#0000ff"]For[/color] Rad = 1 [color="#0000ff"]To[/color] 21
    [color="#006400"]' Nollställ variabel[/color]
    Radsumma = 0
    [color="#006400"]' På varje rad stega igenom alla kolumner[/color]
    [color="#0000ff"]For[/color] Kolumn = 0 [color="#0000ff"]To[/color] Kol_Slut - 1
      [color="#006400"]' Summera raden[/color]
      Radsumma = Radsumma + ActiveCell.Offset(Rad, Kolumn)
    [color="#0000ff"]Next[/color] Kolumn
    [color="#006400"]' Skriv resultatet i SLUT kolumnen[/color]
    ActiveCell.Offset(Rad, Kolumn) = Radsumma
  [color="#0000ff"]Next[/color] Rad
[color="#0000ff"]End[/color] [color="#0000ff"]Sub[/color]

 

Red: Hoppas koden blir bättre formatterad nu

 

/Pär B

 

[inlägget ändrat 2005-02-21 14:05:02 av PerboMan]

Länk till kommentar
Dela på andra webbplatser

Ok, nu funkade det.

 

.... grymt bra gjort.

 

 

Får tacka så mycket.

 

Jobbar du med Excel och VBA eller är det ett intresse!??

Eftersom din lösning var såååå exakt och snabb...

 

 

Tack Tack

 

Martin.M

 

 

 

[inlägget ändrat 2005-02-21 14:23:13 av M.Mever]

[inlägget ändrat 2005-02-21 14:28:32 av M.Mever]

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...