Hvisfunktion med "indsæt ekstra række"
Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Generelt
Forum beskrivelse: Hjælp til generel daglig brug af programmet Excel
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=604
Udskrevet den: 06.Mar.2025 kl. 19:50
Emne: Hvisfunktion med "indsæt ekstra række"
Besked fra: avh
Emne: Hvisfunktion med "indsæt ekstra række"
Posteringsdato: 18.Jan.2012 kl. 10:36
Jeg ønsker at indsætte en formel i f.eks. B1 der siger hvis A1 er tom skal den ikke gøre noget, hvis den ikke er tom, så skal den indsætte en række imellem A og B. Således at man f.eks. kan have en sum i C1 og får de linjer man skal bruge efterhånden som man skal bruge dem.
Er der nogen der ved om dette er muligt, hvis ja, hvordan skal formlen udformes?
På forhånd tak
|
Svar:
Besked fra: Allan
Posteringsdato: 18.Jan.2012 kl. 20:30
Hej, En formel kan ikke klare tricket, her skal der VBA til. Når du skriver 'den skal indsætte en række mellem A og B' går jeg ud fra at du mener en kolonne mellem A og B. Sub IndsaetB() If Range("A1").Value = "" Then Exit Sub Columns("B:B").Insert Shift:=xlToRight End Sub Jeg ved ikke om du har kendskab til VBA, men hvis du forsyner makroen med en knap, vil det virke som du foreskriver det. Hvorfor ønsker du egentlig at automatisere dette? Hvis du har en sum i C1, hvad skal den summere? Hvis den skal summere A1:B1 og du sætter en kolonne ind, vil formlen ændre sig til A1:C1, summen kommer altså med. //Allan
|
Besked fra: avh
Posteringsdato: 19.Jan.2012 kl. 08:00
Tak for dit svar. Nej jeg har ikke erfaring med macro, men det kan jeg jo få
Grunden til at jeg ikke blot vil indsætte en ny linje, er at jeg er ved at konstruere en skabelon til brug for mine knap så Excelkyndige kolleger. Her vil linjeantallet variere en del fra opgave til opgave, men jeg vil gerne gøre det så brugervenligt som muligt, så alle kan bruge det. Og samtidig vil jeg også meget gerne låse skabelonen så meget som muligt, så de ikke forplumrer noget.
Øv at jeg ikke kan lave det i en hvisformel, men det skader heller ikke at lære noget nyt.
Igen, tak for dit svar, det er muligt at der kommer uddybende spørgsmål fra min side, når jeg har forsøgt at forstå macroområdet 
|
Besked fra: A.Larsen
Posteringsdato: 05.Jul.2012 kl. 16:33
Hej Allan
Jeg har et lignede problem, dog udvidet lidt. Jeg skal bruge en funktion, hvor det tal, som man indsætter i fx A1, skal være det antal rækker, som indsættes mellem to rækker.
Fx. skriver man 1 i A1, så kommer der en ekstra række ind mellem række 2 og 3. Hvis man dog ændre tallet i A1 til 3, skal der være 3 ekstra rækker mellem række 2 og 3, dvs. ikke indsættes 3 ekstra, så der total kommer 4, men at den forrige indsatte række erstates med 3.
Jeg tog ovenstående script og ændrede til:
Sub IndsaetB() x = Range("A1").Value If x = 1 Then Rows("2:2").Insert Shift:=xlToTop ElseIf x = 2 Then Rows("2:3").Insert Shift:=xlToTop End If End Sub
Den er ikke særlig smart, da det bare er en elseif-funktion, som jeg rent faktisk skal kopier 10 gange, da det skal være muligt at indsætte op til 10 rækker.
Kan du evt. hjælpe mig?
Mvh
Alexander
|
Besked fra: Allan
Posteringsdato: 09.Jul.2012 kl. 12:58
Hej Alexander, Ikke særlig smuk kode, men den virker: Sub IndsaetRaekke() Raekke = Range("A1").Value Forfra: NyRaekke = Application.InputBox("Tast antal af rækker", "Indsæt rækker", , , , , , 1) If NyRaekke > 10 Or NyRaekke < 1 Then MsgBox "Du kan kun indsætte mellen 1 og 10 rækker", vbCritical, "Indsæt rækker" GoTo Forfra End If Range("A1").Value = NyRaekke IndsaetRaekke = Abs(Raekke - NyRaekke - Raekke) Koer: If Indsat = IndsaetRaekke Then Exit Sub Rows("3:3").Insert Shift:=xlDown Indsat = Indsat + 1 GoTo Koer End Sub //Allan
|
Besked fra: A.Larsen
Posteringsdato: 09.Jul.2012 kl. 15:49
Hej Allan
Mange tak, nu er jeg ligeglad med skønheden af koden, så du skal du ikke bekymre dig med :-)
Desværre får jeg fejl ved
IndsaetRaekke = Abs(Raekke - NyRaekke - Raekke)
"compile error - expected funktion or variable"
Ved du hvorfor?
|
Besked fra: Allan
Posteringsdato: 10.Jul.2012 kl. 10:10
Ups ja  Det gik lidt stærkt Sub IndsaetRaekke() Dim Raekke, NyRaekke, Indsat, IndsaetRaekke As Integer Raekke = Range("A1").Value Forfra: NyRaekke = Application.InputBox("Tast antal af rækker", "Indsæt rækker", , , , , , 1) If NyRaekke > 10 Or NyRaekke < 1 Then MsgBox "Du kan kun indsætte mellen 1 og 10 rækker", vbCritical, "Indsæt rækker" GoTo Forfra End If Range("A1").Value = NyRaekke IndsaetRaekke = Abs(Raekke - NyRaekke - Raekke) Koer: If Indsat = IndsaetRaekke Then Exit Sub Rows("3:3").Insert Shift:=xlDown Indsat = Indsat + 1 GoTo Koer End Sub
|
|