Avatar billede TheresaD Juniormester
31. marts 2015 - 09:38 Der er 12 kommentarer og
1 løsning

effektivisering af HVIS, HVIS formel

Jeg har lavet et regneark, som består af 4 ark

ark1 - forside
ark2 - indtægt
ark3 - udgift
ark4 - dataark

I dataarket er der 110 rækker, hvor der er data i 22 celler (A til V)

Det jeg ønsker er at alt efter hvilket tal du skriver på forsiden så henter den data fra den ønskede række.

Fx hvis man taster 1, så henter den data fra række 1
hvis man taster 2 så henter den data fra række 2
osv.

Den skal så sætte de 2 (A-B) første celler i rækken på forsiden, de 10 (C-L) næste på indtægt og de sidste 10 (M-V) på udgift.

Jeg kan godt selv lave en HVIS,HVIS formel men den bliver meget lang, da der er 110 rækker, så vil høre om der ikke er en nemmere måde??
Avatar billede supertekst Ekspert
31. marts 2015 - 10:00 #1
Placering på ark ved indsættelse - samme række som indtastet på forside - eller?

VBA kunne være en løsning..
Avatar billede xl-Enthusiast Ekspert
31. marts 2015 - 10:05 #2
En formelløsning kunne måske være:

http://gratisupload.dk/f/8qwam640l0/
Avatar billede TheresaD Juniormester
31. marts 2015 - 10:52 #3
alle muligheder er velkommen :) så gerne VBA

Valg af række den skal hente data fra er på Forsiden D8

Hvis vi så siger man har skrevet 4, så den skal hente data fra dataarket række 4. Så skal data placeres på følgende måde:

Dataark. A4 - Forside N10
Dataark. B4 - Forside N14
Dataark. C4 - Indtægt N4
Dataark. D4 - Indtægt N6
Dataark. E4 - Indtægt N8
Dataark. F4 - Indtægt N10
Dataark. G4 - Indtægt N12
Dataark. H4 - Indtægt N20
Dataark. I4 - Indtægt N23
Dataark. J4 - Indtægt N23
Dataark. K4 - Indtægt N27
Dataark. L4 - Indtægt N30
Dataark. M4 - Udgifter N5
Dataark. N4 - Udgifter N9
Dataark. O4 - Udgifter N12
Dataark. P4 - Udgifter N16
Dataark. Q4 - Udgifter N20
Dataark. R4 - Udgifter N25
Dataark. S4 - Udgifter N30
Dataark. T4 - Udgifter N31
Dataark. U4 - Udgifter N34
Dataark. V4 - Udgifter N38

Håber dette giver mening? :)
Avatar billede supertekst Ekspert
31. marts 2015 - 11:20 #4
Ok - 2 x N23 på Indtægt - sidste skal måske N25 eller?
Avatar billede store-morten Ekspert
31. marts 2015 - 11:47 #5
Måske:

Dataark. A4 - Forside N10 : =INDEKS(Dataark!$A$1:$V$110;Forsiden!$D$9;1)
Dataark. B4 - Forside N14 : =INDEKS(Dataark!$A$1:$V$110;Forsiden!$D$9;2)
Dataark. C4 - Indtægt N4  : =INDEKS(Dataark!$A$1:$V$110;Forsiden!$D$9;3).....

Forsiden D9 = Række nr. 4
Det sidste tal i formlen er Kolonne nr.
1 = A
2 = B
3 = C
Avatar billede TheresaD Juniormester
31. marts 2015 - 12:13 #6
Ja den skulle være N25
Avatar billede TheresaD Juniormester
31. marts 2015 - 12:19 #7
Jeg kan desværre ikke få INDEKS formlen til at virke :(
Avatar billede xl-Enthusiast Ekspert
31. marts 2015 - 12:19 #8
Er det noget i den her retning?

http://gratisupload.dk/f/8qwbqw7i4i/
Avatar billede supertekst Ekspert
31. marts 2015 - 12:24 #9
Rem Version 1 / Anbringes "under Forside" (Højreklik / Vis programkode / sæt ind)
Const dataRæk = 110
Const tilKolonne = "N"
Const indtægtRæk = "4,6,8,10,12,20,23,25,27,30"
Const udgiftRæk = "5,9,12,16,20,25,30,31,34,38"
Dim dataark As Object
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rækNr As Integer
    If Target.Address = "$D$8" Then
        rækNr = 0
       
        If IsNumeric(Target) = True And Target > 0 And Target <= dataRæk Then
            Set dataark = ActiveWorkbook.Sheets("Dataark")
           
            rækNr = Target
            hentFraData rækNr
        End If
    End If
End Sub
Sub hentFraData(rækNr)
    tilForside rækNr
    tilIndtægt rækNr
    tilUdgift rækNr
End Sub
Private Sub tilForside(rækNr)
    With ActiveWorkbook.Sheets("Forside")
        .Range(tilKolonne & 10) = dataark.Range("A" & rækNr)
        .Range(tilKolonne & 14) = dataark.Range("B" & rækNr)
    End With
End Sub
Private Sub tilIndtægt(rækNr)
Dim kolNr As Variant, tabel As Variant
    tabel = Split(indtægtRæk, ",")
   
    For kolNr = 3 To 12
        With ActiveWorkbook.Sheets("Indtægt")
            .Range(tilKolonne & tabel(kolNr - 3)) = dataark.Range("C" & rækNr).Offset(0, kolNr - 3)
        End With
    Next kolNr
End Sub
Private Sub tilUdgift(rækNr)
Dim kolNr As Variant, tabel As Variant
    tabel = Split(udgiftRæk, ",")
   
    For kolNr = 13 To 22
        With ActiveWorkbook.Sheets("Udgift")
            .Range(tilKolonne & tabel(kolNr - 13)) = dataark.Range("M" & rækNr).Offset(0, kolNr - 13)
        End With
    Next kolNr
End Sub
Avatar billede supertekst Ekspert
31. marts 2015 - 12:25 #10
NB.: Testfil kan evt. fremsendes. Send en mail - @-adresse under min profil.
Avatar billede TheresaD Juniormester
31. marts 2015 - 12:30 #11
supertekst, tak for hjælpen :) har sendt mail så du kan sende filen :)
Avatar billede TheresaD Juniormester
31. marts 2015 - 13:13 #12
supertekst, din kode virker perfekt

Jeg har bare en nys spørgsmål.

Kan man få den til at lave formlen på denne måde.

Hvis man taster fx 5, så vælger den, den række i dataarket, hvor tallet i kolonne A starter med 5?

der vil kun være unikke tal i kolonne A og de vil gå fra 1-110.

Har nemlig nogle huller i rækkerne. mangler nr 9, 42 og 101. som produkt, derfor kommer mine produkter forkert ind i forhold til det.
Avatar billede supertekst Ekspert
31. marts 2015 - 13:22 #13
Tak - jeg prøver at se på det..
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

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