Dansk Regneark Forum
  Hjælp Hjælp  Søg i forum   Arrangementer   Opret ny bruger Opret ny bruger  Log ind Log ind


Emne lukketHvisfunktion med "indsæt ekstra række"

 Besvar Besvar
Forfatter
avh Se dropdown
Forum Begynder
Forum Begynder


Medlem: 18.Jan.2012
Status: Offline
Point: 4
Direkte link til dette indlæg Emne: Hvisfunktion med "indsæt ekstra række"
    Sendt: 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
Til top



Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 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
 
Til top
avh Se dropdown
Forum Begynder
Forum Begynder


Medlem: 18.Jan.2012
Status: Offline
Point: 4
Direkte link til dette indlæg Sendt: 19.Jan.2012 kl. 08:00
Tak for dit svar. Nej jeg har ikke erfaring med macro, men det kan jeg jo få Smile
 
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 Smile
Til top
A.Larsen Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 04.Jul.2012
Land: Danmark
Status: Offline
Point: 17
Direkte link til dette indlæg Sendt: 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
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 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
Til top
A.Larsen Se dropdown
Forum Begynder
Forum Begynder
Avatar

Medlem: 04.Jul.2012
Land: Danmark
Status: Offline
Point: 17
Direkte link til dette indlæg Sendt: 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?
Til top
Allan Se dropdown
Forum Admin
Forum Admin
Avatar
Forum Admin

Medlem: 03.Feb.2010
Land: Danmark
Status: Offline
Point: 10330
Direkte link til dette indlæg Sendt: 10.Jul.2012 kl. 10:10
Ups ja Embarrassed
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
Til top
 Besvar Besvar

Skift forum Forum tilladelser Se dropdown

© 2010 - 2024 Dansk Regneark Forum - en del af Excel-regneark.dk