Avatar billede Oscar560 Novice
03. juli 2012 - 09:40 Der er 9 kommentarer og
1 løsning

udvide formel til at omfatte ny række

Hej eksperter

Jeg har et VBA som kan udvide med nye tomme rækker,
problemet er at jeg har nogle formler som skal automatisk udvides til at tage de nye rækker med i beregningen.
Det er ikke en tabel og den mulighed udlukkes.

F.eks har jeg indhold i b1 til b10 og formel i b11 som tæller tæl.hvis(b1:b10;2) hvis jeg så tilføjer nyt række i b11 så formel bliver rykket til b12 viser den stadigvæk kun tæl.hvis(b1:b10;2) men den skulle tage den nye række med så den hedder tæl.hvis(b1:b11;2)

Nogen der har et forslag?
Avatar billede finb Ekspert
03. juli 2012 - 10:05 #1
vba:
(detOprindeligeRange).currentRegion.select
Dette skulle medtage nye udvidelser
Mvh
finb
Avatar billede Oscar560 Novice
03. juli 2012 - 11:01 #2
Den kan jeg ikke få til at virke
Avatar billede Mads Larsen Nybegynder
03. juli 2012 - 11:10 #3
Nu ved jeg ikke om du bygger den sammen med:
http://www.eksperten.dk/spm/965463

Det har ikke lykkes mig at få finb's kode til at virke.
Der skal stå noget i den næste celle, ellers vil CurrentRegion ikke vælge cellen.

Her er et forslag hvordan det kunne gøres.

Sub NyRow()
    Range("Afdeling_1_Slut").EntireRow.Insert
    RowNr = Range("Afdeling_1_slut").Row - 1
    Range("Afdeling_1_slut").Formula = "=Countif(Afdeling_1_start:B" & RowNr & ",2)"
End Sub
Avatar billede Mads Larsen Nybegynder
03. juli 2012 - 11:15 #4
Tror måske jeg fandt en bedre måde ;)

=TÆL.HVIS(INDIREKTE("B1:B"&RÆKKE()-1);2)
Avatar billede Oscar560 Novice
03. juli 2012 - 11:35 #5
Hej GuFFe
Ja den skal kobles sammen med den anden, jeg prøvede den anden igår på en næsten tom ark hvor jeg bare lavede sum på nogen tal, sjovt nok virkede det hvor jeg bare tilføjede nyt række med vba og så udvidede den sgu selv sum formlen, men det gøre den ikke på arket den nu hvor den skal bruges. Prøverde lige din VBA, den vil nok kunne bruges det kræver lidt modifikation, men den formel er sgu meget letter og arbejde med og den virker lige efter hensigten. Super, så nu skal jeg bare fundet ud af hvordan jeg laver et vba for at slette markeret række og så er arbejdet fuldført. Send et svar for at for velfortjent point :-)
Avatar billede Mads Larsen Nybegynder
03. juli 2012 - 11:40 #6
ActiveCell.EntireRow.Delete (Den sletter rækken du står på)

Jeg tror måske du har indsat en række som stod midt i formlen

Altså hvis det var Sum(A1:A5) - og man så indsætter en række i A3 - så vil den udvide formlen til Sum(A1:A6), fordi den er i midten af den. Men hvis man indsætter en ny række på selve Sum rækken, så vil den ikke tage den med.

Held og lykke med at få det til at virke :)
Avatar billede Oscar560 Novice
03. juli 2012 - 12:04 #7
Det har du ret i, har lige prøvet det, dvs. problemet er fordi jeg flytter række med formel, så det kan løses ved at flytte Afdeling1_Slut et række op så det ikke er formel rækken den flytter.
Det tror jeg er beder, eftersom det ikke kun er tæl.hvis formlen jeg skal ændre men også tæl og sum formlen som rækken indholder. Det er hurtigere oprette et tom række oven over formel rækken og så definere den med afdeling1_Slut så vil alle formlerne automatisk medtage nye rækker.

Jeg prøver, og tak for slette VBA :-)
Avatar billede Slettet bruger
03. juli 2012 - 12:32 #8
Eftersom du har accepteret #6 er problemmet vel løst, men andre kunne måske have glæde af følgende:

1. =SUM(B$1:INDEKS(B:B;RÆKKE()-1))

eller (hvad der efter min opfattelse er) endnu bedre, men meget lidt kendt:

2. =SUM($B$1:UpOne)

hvor UpOne er en navngivet fomel: =B10

Her er det vigtigt, at du står i B11 når den navngivne formel laves og, at du bruger relativ reference, altså ingen dollartegn.

Hans
Avatar billede Oscar560 Novice
04. juli 2012 - 09:41 #9
Hej Hans

Det løser ikke problemet ved at summere et navngivet område, eftersom man ikke kan navngive cellen med formlen.

Det betyder så at nå man indsætter ny række så forbliver Upone i celle B10, der kommer en ny række i B11, og =SUM(B1:upone) bliver flyttet til B12 og summere ikke den ny række

Det vil være den bedste løsning at have en VBA som tager stilling til det hele, jeg havde en oprindelige VBA med rigtig mange sammenkoblede funktioner, men desværre kunne jeg ikke tilpasse den til mit regneark koden var alt for avanceret.

Derfor må jeg nøjes med enkelt vba funktion og så lave et alternetiv løsning med et tom række inden rækken med formlerne.

Den anden formel SUM med INDEKS kan godt bruges, men der er altså en regneark med mange faner og mange sum rækker så det vil tage alt for langt tid og begynde og ændre på cellerne.

For en enkelt ark med enkelt funktion kan det bruges, eller hvis man bygger det op fra starten
Avatar billede Slettet bruger
04. juli 2012 - 13:11 #10
Læste du hvad jeg skrev i den første linje?

Men i øvrigt forstår jeg ikke hvad du skriver i dine første to sætninger i #9.

Hvis opgaven er som du oprindeligt skrev:

... at jeg har nogle formler som skal automatisk udvides til at tage de nye rækker med i beregningen ...

så fungerer det fint for mig. Og denne UpOne-ting er ikke meget mere besværlig at bruge end Autosum.

Hans
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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