18. juli 2017 - 11:33Der er
12 kommentarer og 1 løsning
Dynamisk tilføjelse til formel / Dynamisk søg og erstat
Hejsa,
Jeg sidder med en række formler (flere tusind), der skal udvides/ændres på, men er kommet i tvivl om, hvordan det gøres lettest/smartest.
Alle formlerne ligner følgende: =C5+D5-S5 Men nogle af dem har også noget mere efter denne grundlæggende formel f.eks.: =C829+D829-S829+T834+T835+T835+(T836*2)
Jeg kunne godt tænke mig: =C5+D5+E5+F5+G5+H5-S5 Eller =SUM(C5:H5)-S5 Men hvor jeg beholder det der evt. må være ekstra efter -S5
Der er selvfølgelig tale om mange rækker (ikke kun række 5).
Tænker det ikke burde være så svært, men kan ikke rigtig finde en løsning. Har prøvet med noget søg og erstat uden det store held.
Hvis du ikke kender til regular expressions, så kik på nogle af de mange tutorials, der findes. Ideen er, at du kan bruge "placeholders" i dine søg og erstat - så du kan bevare rækkenumrene.
#1 Mange tak for dit svar. Håbede lidt på en løsning, der kunne klares rent i Excel (uden brug af addons/-ins), men kommer der ikke andet, vil jeg da give det et skud. Kender godt til konceptet med regex, men har ikke nogen erfaring med brug af det.
#2 Mange tak for svaret. Formlen jeg skal have udbygget skal dog "stå og arbejde" og kan ikke bare konverteres til en værdi efterfølgende, muligvis udvides igen senere hen, så det går ikke rigtig at trække formlen fra sig selv. Jeg vil gerne have udvidet den i forvejen eksisterende/ændret den, jeg har ikke rigtig mulighed for at opbygge en ny med den nuværende i... Hvis det giver mening.
Tak for jeres input, håber dog stadig på en løsning der ligger lidt mere lige til/passer lidt bedre til lige netop min problemstilling.
Jeg bruger desuden Excel 2016 64-bit. Har lidt erfaring efterhånden med VBA, så måske man kunne angribe det den vej.
Det kan godt klares uden add-on. I excel har du kun adgang til regexp via vba/makroer, så du skal kode det selv - det behøver ikke være kompliceret. Se fx http://analystcave.com/excel-regex-tutorial/ for inspiration.
Jeg har ikke andre vinkler på en løsning, end regexp.
#1 Downloadede og installerede det efter hjemmesidens instruktioner, men kan ikke få det til at virke, bliver oversvømmet af errors. Kan se, det sidst er opdateret i 2011 eller noget i den dur, og at der var 64-bit problemer med Office 2010, så tænker at jeg med 2016 OG 64-bit udgaven af Excel nok presser kompabiliteten lidt for langt. Desværre.
Hmm - så var det ikke et ret godt råd - have ikke testet det. Men mon ikke nemt du kan finde en regexp/search-replace til Excel, der virker - hvis det er vejen, du vil.
Hej Hvis jeg har forstået problemet rigtig, burde nedenstående kunne bruges.
Hvis din oprindelige formel som udfører beregningerne for række 5, står i kolonne A, så kan du i kolonne B(hvis den er fri) skrive følgende formel =A5+sum(E5:H5)
#4 / #6 Tak for linket, og jo, dine råd er meget værdsatte - havde jeg kørt med en ældre Excel version, kunne det have været løsningen. Synes ikke liiiige det er til at finde et andet (gratis) tool/addin/addon, så VBA bliver måske løsningen. Nu får vi se. Tak for dit input i hvert fald! :)
#7 Tak for dit svar. Det løser det ikke lige for mig, da jeg ikke har så meget "plads" at arbejde med. Jeg skal have ændret den i forvejen eksisterende formel, den du antager står i A, jeg kan ikke lave en ny og placere den i B.
Hvis din angivelse af bestående formler passer, at der fx er en højre el. venstre parentes ude til højre, så kan du prøve denne kode "på en kopi naturligvis"
Tildel koden en genvejs tast, placer markør i den første celle i kol A og kør via genvejstasten en celle ad gangen.
Sub test1()
x = ActiveCell.Formula
y = InStr(1, x, "-") Z = InStr(y, x, "+") v = Right(x, Len(x) - Z + 1) If InStr(1, x, "(") Then ActiveCell.Formula = "=sum(C" & ActiveCell.Row & ":H" & ActiveCell.Row & ")-S" & ActiveCell.Row & v Else ActiveCell.Formula = "=sum(C" & ActiveCell.Row & ":H" & ActiveCell.Row & ")-S" & ActiveCell.Row End If
Jeg forstår ikke din bemærkning i #8, om "ikke har så meget "plads" - exel har 16384 kolonner.
Ved siden af den kolonne hvor dine nuværende/eller rettede beregninger står, kan du blot indsætte en kolonne. Alle dine eksisterende formler retter sig automatisk da du jo ikke har anvendt $-tegn i dine formler.
I den nye kolonne indsættes så en formel som foreslået i #7
#10 Tak for svaret - arbejder allerede i en kopi af det originale ark, en lektie man lærer hurtigt, når man leger med VBA. ;) Giver din kode et skud lidt senere, skal lige prøve det jeg selv har leget lidt med.
#11 Med plads mener jeg, at jeg har fyldte kolonner på begge sider af den pågældende kolonne med formlen. Der kører en masse VBA kode og denne retter sig desværre ikke automatisk (og $ er brugt i visse andre kolonner) - sidst der skulle flere kolonner ind, tog det en halv dags tid at rette VBA koden til, det er et voldsomt stort ark.
Så fandt jeg ud af det - det blev en VBA løsning med brug af For Each og Replace.
Jeg siger tak for alle kommentarerne! :)
Her er koden: Sub RPLF() Dim idr As Range Dim crp As Double Dim lrp As Double Dim form As String Dim newform As String
crp = 4
With Worksheets("S-S") lrp = .Cells(.Rows.Count, "A").End(xlUp).row End With
For Each idr In Range("A4:" & "A" & lrp) crp = crp + 1 form = Worksheets("S-S").Range("T" & crp).Formula newform = Replace(form, "=C" & crp & "+D" & crp & "-S" & crp, "=SUM(C" & crp & ":H" & crp & ")-S" & crp) Worksheets("S-S").Range("T" & crp).Formula = newform Next End Sub
Synes godt om
Ny brugerNybegynder
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.