Avatar billede spoi Nybegynder
05. november 2003 - 15:12 Der er 27 kommentarer og
3 løsninger

LOPSLAG eller andre ideer.

Hej
Ark 1:Jeg har et regneark, hvor indkøberen er i fuld gang med at indtaste hvilke varer der købes hvor(navn,adresse,tlfnr mm). Det står bare derned af i en pærevælding!
Får ham til at at angive en varekategori(feks har alle stålvarer varekategori 1)

På ark 2 sorterer jeg det såmand bare efter de virksomhed vi køber hos.

ARK 3/4 og 5 Kunne jeg egentlig godt tænke mig at have opdelt efter varetype dvs et ark med bolte, et med feks gevindstænger, et med stålvarer etc.
Det er meget forskelligartede varer der købes og der kommer løbende helt nye varer.

Hvordan løser jeg dette.
Har fået et tips om LOPSLAG.
Men da der jo løbende tilføjes varer skal jeg have beregnigerne for tomme felter lavet på forhånd. Varegrp er ens for de enkelte ark men ved oplag hvor der fels ikke står 1(for stålvarer) men feks 2(for bolte) bliver resultatet #I/T. Det er ikke pænt ud. Skal jeg bruge HVIS her???

Håber jeg har fået det beskrevet det nogenlunde så det kan forstås. Er der nogen der har lyst til at hjælpe?

Måske er det smartere at han simpelthen bare selv indtaster manuelt på de emkelte ark - men han er kommet et godt stykke
05. november 2003 - 15:18 #1
Hvis din formel nu ser således ud:
=LOPSLAG(x;y;z)

ændres den til
=HVIS(x<>"";LOPSLAG(x;y;z);"")
så undgår du fejlmeddelelsen.
Avatar billede stefanfuglsang Juniormester
05. november 2003 - 15:18 #2
Det er et langt spørgsmål, men til det sidste kan man bruge
=hvis(er.fejl(a1);"";a1)
viser a1, hvis der ikke er fejl i a1
a1 kan naturligvis erstattes af en formel eller en anden celle
05. november 2003 - 15:21 #3
Som jeg var inde på i et tidligere spørgsmål, vil det aldrig blive rigtigt godt i Excel.

Det ville være oplagt at lave en database i f.eks. Access, da der er behov for flere tabeller med relationer imellem(leverandører - varer - varetyper bare for at nævne de oplagte). Du kan ikke lave relationer mellem tabeller i Excel - selv om LOPSLAG gør noget, der ligner.
Avatar billede spoi Nybegynder
05. november 2003 - 15:28 #4
Hverken jeg eller indkøberen har desværre access.
Avatar billede spoi Nybegynder
05. november 2003 - 15:30 #5
stefanfuglsang: Yep det er langt. Men syne det var svært at forklare og det kunne jo være der var nogen der havde andre ideer end LOPSLAG
Avatar billede stefanfuglsang Juniormester
05. november 2003 - 16:02 #6
Jeg tror en makro vil være bedre.
Makroen skal løbe data-arket igennem, oprette et nyt ark, navngive det,  og kopiere data for hver varetype.
Arket skal selvflg. ikke oprettes hvis det findes i forvejen.

skitse:
Sub FindVaretyper()
  for each cell in VaretypeKolonne
      Call OpretArk(VareTypeNavn(cell))
      Call KopierRække(VareTypeNavn(cell),cell)
  next
end sub
jeg når ikke mere lige nu, men sig til hvis jeg skal gøre mere ved ideen
Avatar billede mugs Novice
05. november 2003 - 19:59 #7
Denne returnerer en tom streng, hvis der ikke er fundet en værdi i lopslaget:

=HVIS(ER.IKKE.TILGÆNGELIG(LOPSLAG(A2;Varer;2;FALSK))=SAND;" ";LOPSLAG(A2;Varer;2;FALSK))
Avatar billede spoi Nybegynder
06. november 2003 - 11:25 #8
hmm det ser ud til at fungere med mugs forslag, Nu er mim tabelmatrix i opslaget vist det eneste problem, der er tilbage - tror jeg da.
Sådan ser min formel ud
=HVIS(ER.IKKE.TILGÆNGELIG(LOPSLAG($B$1;Vare!A11:J453;2;FALSK)) = SAND; " ";LOPSLAG($B$1;Vare!A11:J453;2;FALSK))

Men når jeg kopierer den ned eller hen i min nye tabel ændres tabelmatricen jo - og det er jo ikke meningen er det? Benytter jeg $ foran tabelmatricen fungerer det ikke - hmm??
Avatar billede jkrons Professor
06. november 2003 - 11:56 #9
Navngiv din tabelmatrix og referer til navnet i stedet. Alætså marker A11:J453 og kald området et eller andet, fx Vareliste. Skriv det i rudeb, hvor der normalt står celleadresser. Afslut med Enter. Breug så funktionen Indsæt - Navn - Anvend, til at indsætte dit navn i de relevante formler.
Avatar billede spoi Nybegynder
06. november 2003 - 13:39 #10
Æv det går galt
=HVIS(ER.IKKE.TILGÆNGELIG(LOPSLAG($B$1;Vare;2;FALSK)) = SAND; " ";LOPSLAG($B$1;Vare;2;FALSK))
HAr fået navngivet tabelmatrixen til Vare.
Men der står det samme i hver linie lige pludeligt.
Her er nogle af de data der skal sættes over på det nye ark.

Grp    Vare      Virksomhed
1      stål        Sanistål
1      bjælker    Sanistål
2      Bolte      Arvid
1      Runde rør  LMG Stål
3      gevindstng  Rose

osv osv
Varegrp 1 skal ind på et ark for sig ligesom varegrp 2 og 3
På disse ark står varegp nr altid fast i B1
Kan i se hvad det er der går galt?
Avatar billede spoi Nybegynder
06. november 2003 - 14:50 #11
Det ser ud til den virker når jeg benytter denne formel

For 2. kolonne dvs varen.
=HVIS(ER.IKKE.TILGÆNGELIG(LOPSLAG($B$1;Vare!$A11:$K$500;2;FALSK)) = SAND; " ";LOPSLAG($B$1;Vare!$A11:$K$500;2;FALSK))

For 3. kolonne dvs virksomheden
=HVIS(ER.IKKE.TILGÆNGELIG(LOPSLAG($B$1;Vare!$A11:$K$500;3;FALSK)) = SAND; " ";LOPSLAG($B$1;Vare!$A11:$K$500;3;FALSK))

$K$500 er valgt fodi jeg ikke på forhånd kender antal indtastninger - men vil da tro 500 er ok.
Er der nogen der kan forklare hvorfor det virker ?
Avatar billede spoi Nybegynder
06. november 2003 - 14:54 #12
Æv virker allivel ikke
Når der feks er
varegrp 2 efterfulgt af varegrp 1 kommer der en tom linie. De skal helst stå lige efter hinanden. svært at forklare.
Hmm kan godt se hvorfor, men hvordan gør jeg det. Skal keg virkelig til at have fat i en makro - æv
Avatar billede spoi Nybegynder
06. november 2003 - 15:07 #13
Hmm nu virker det altså underligt
hvis jeg i mit start ark tilføjer en ekstra line af varegruppe 1
Gentager den sig 4 gange på det nye ark.
Avatar billede spoi Nybegynder
07. november 2003 - 08:22 #14
Er der ikke nogen der vil have tilsendt et eksempel på mit regneark?
Det er nemlig lidt svært at forklare.

HAr prøvet at sortere først kolonne så går det ok med varegruppe 1 men ikke alle de andre
Avatar billede spoi Nybegynder
07. november 2003 - 08:32 #15
Stefanfulsang måske er det en makro der skal til
Avatar billede stefanfuglsang Juniormester
08. november 2003 - 09:13 #16
Jeg skal kigge på det i løbet af weekenden.
Avatar billede klid Nybegynder
09. november 2003 - 11:06 #17
Det er lidt indviklet, men slet ikke umuligt.
Lad os sige at i ark AlleVare kolonne E angiver dit varegruppenummer for den vare der er i rækken. For hver varegruppe skal du have to andre kolonner. Lad os sige at det for varegruppe X er kolonne b og c.
I kolonne b række 11 indsættes koden: Hvis(e11=x;e10+1;e10)
I kolonne c indtastes Hvis(b11>b10;b11;"")
Nu kan man på ark VareX lave et lopslag. I kolonne a på denne side findes blot en talrække 1,2,3,4,5, osv

I kolonne E skrives: lopslag(a11;AlleVare!$c$11:$n$100;kolnr;sand)

Kolnummer afhænger af hvilen kolonne du vil have overført - sæt den til 4, så får du kolonne F i AlleVare arket overført osv.

Problemet med de grimme #I/N kan du rette med betinget formatering, hvor du vælger samme skriftfarve som baggrundsfarven, hvis der er fejl. Lidt ala det Stefan Fulgsagn synger om, men med betinget formatering.

Har du mange varegrupper kan det være at din varegruppekolonne skal være kolonne AA. Alle de der udregningskolonner kan så med fordel skjules, så man ikke skal se på dem.
Livet er alt for kort til Access
Avatar billede spoi Nybegynder
10. november 2003 - 08:03 #18
Klid: hmm får det ikke til at virke - måske fordi jeg ikke helt forstår hvad det er jeg skal gøre. Men har forsøgt. For varegruppe 1 kommer der i kolonne b og c til at stå 2 - eller måske gør jeg det forkert!
Avatar billede spoi Nybegynder
10. november 2003 - 09:35 #19
stefanfuglsang: vil det hjælpe dig at have mit ark, så vi er sikre på at du ved hvad jeg efterlyser?
Avatar billede spoi Nybegynder
10. november 2003 - 09:38 #20
Giver gerne 100 point i stedet for 60 for brugbar løsningforslag!!!
Avatar billede spoi Nybegynder
10. november 2003 - 10:23 #21
hmm nu er det lykkedes sådan at der er tomme felter der hvor der er en anden varegruppe end den ønskede. Men det er jo ikke pænt med tomme linier i mellem og også uoverskueligt hvis der er over 100 forskellige varer i en varegruppe(gæt). så det den jo egentlig skal er at spronge de linier over hvor den pågældende varegrupper ikke er den aktulle eller slette/skjule linier i det nye ark hvor der er tomme linier. Hmm også derfor jeg umiddelbart tror VB må være løsningen.
Avatar billede stefanfuglsang Juniormester
10. november 2003 - 10:49 #22
Beklager spoi, jeg har ikke haft tid til at se på makroen i weekenden.
Prøv at sende dit data-ark til stefanfuglsang@hotmail.com, så skal jeg gøre en indsats.

Er det ikke smartest at lave to makroer: en der overfører alle de data, der er skrevet indtil nu, og en til at opdatere med?

Mht. point: 60 point er ok (man kan alligevel ikke bruge dem på den lokale cafe...).
Avatar billede spoi Nybegynder
10. november 2003 - 11:22 #23
har sendt det.

Ved ikke hvad der er smartest, da jeg jeg hverken er en haj til VBA eller excel i det hele taget! Havde dog håbet på det kunne gøres med funktioner da det nok er lettere for mig *SS*. Men bare det kan fungere er jeg såmænd lykkelig.

På forhånd tak
Laila
Avatar billede stefanfuglsang Juniormester
10. november 2003 - 12:38 #24
Her er så første skud, koden anbringes i et modul (Indsæt/Modul) i vba:
(for at oprette knap til funktionen: vælg Vis/værktøjlinier/Kontrolelementer vælg knappen (en grå firkant) og tegn denne på arket. Dobbeltklik på den, og skriv OpretVareGrupper inden i "Sub-endsub"-blokken.)
På Vare-arket har jeg brugt "A8" til at holde styr på, hvor vi er kommet til, denne skal bare være tom til at starte med.

Option Explicit
Function OpretArk(gruppe As String) As Integer
'opretter nyt ark, hvis det ikke eksisterer, returnerer index på arket.
  Dim test As Integer
 
  On Error GoTo Opret
  OpretArk = Worksheets(gruppe).index ' dette giver fejl, hvis arket ikke eksisterer, så går vi til opret
  Exit Function
Opret:
 
  Worksheets.Add after:=Worksheets.Count 'anbring sidst
  ActiveSheet.Name = gruppe              'navn=gruppenavn
  OpretArk = ActiveSheet.index
End Function

Sub OpretVareGrupper()

    Dim varer As Worksheet
    Dim raekke As Range
    Dim startcelle As Range
    Dim startraekke As Integer
    Dim nyraekkeindeks As String
    Dim start As Integer
    Dim tilcelle As Range
    Dim fracelle As Range
    Dim gruppecelle As String
    Dim vareliste As Range
    Dim gruppeliste As Range
    Dim index As Integer
    Dim gruppetekst As String
    Dim gruppe As String
    Dim raekkenr As Integer
    gruppetekst = "Grp" ' overskrift for kolonne med grupper
    gruppecelle = "a" ' kolonne med gruppenr.
    nyraekkeindeks = "a8" ' celle med indeks på nye rækker
    Set varer = Worksheets("Vare")
    startraekke = varer.Range(nyraekkeindeks) 'hvor er vi kommet til?
    If startraekke = 0 Then
        Set startcelle = varer.Range(gruppecelle & ":" & gruppecelle).Find(gruppetekst, LookIn:=xlValues).Offset(1)
    Else
        Set startcelle = varer.Range(gruppecelle & startraekke)
    End If
    Set gruppeliste = varer.Range("d2:d6")
    Set vareliste = Application.Intersect(startcelle.Range("a1:z1000"), varer.UsedRange)
    raekkenr = 1
    For Each raekke In vareliste.Rows
        raekkenr = raekkenr + 1
        If raekke.Range(gruppecelle & "1") <> 0 And Application.WorksheetFunction.IsNumber(raekke.Range(gruppecelle & "1")) Then
            gruppe = gruppeliste(raekke.Range(gruppecelle & "1"))
            If gruppe = "" Then
                MsgBox "Ukendt gruppenummer"
            Else
                index = OpretArk(gruppe) ' Opret arket (hvis det ikke findes endnu)
                Worksheets(index).Activate
                Set tilcelle = Range("b65535").End(xlUp).Offset(1)  ' find sidste tomme celle i B
                Set fracelle = raekke.Range("b1")
                tilcelle.Offset(0, 0) = fracelle.Offset(0, 1) ' kopier varenavn
                tilcelle.Offset(0, 1) = fracelle.Offset(0, 0) 'kopier leverandør
                'tilcelle.Offset(0, 2) = fracelle.Offset(0, 2) 'kopier næste cell osv.
               
            End If
        End If
    Next
    'Her kunne man evt. sortere arkene?
    varer.Activate 'gå tilbage til vareside - kan evt.fjernes
    varer.Range(nyraekkeindeks) = raekkenr + 1 ' opdater position
End Sub
Avatar billede stefanfuglsang Juniormester
10. november 2003 - 12:41 #25
Ovenstående er ikke 100% fleksibelt, men det vil tage langt tid at kode det, så det tager højde for alle tænkelige ændringer i opstillingen af felter.
Avatar billede spoi Nybegynder
10. november 2003 - 12:47 #26
skal jeg slette alt det der står i ark2(stålvarer), ark3(bolte) osv?
Avatar billede stefanfuglsang Juniormester
10. november 2003 - 13:15 #27
Ja, hvis du skal teste makroen med de data du har sendt mig, men hvis du har et ark, der allerede er indtastet rigtige data og du har overført nogen af dem manuelt, så kan du blot i A8 på Vare-arket skrive nummeret på rækken du er kommet til
Avatar billede klid Nybegynder
10. november 2003 - 16:39 #28
Det burde virke. Men du skal kopiere række 11 nedad i alleVare arket, så VIRKER det. I vareX arket skal du kopier både nedad og henad, så du får alle poster med i din varebeskrivelse. Henad skal du variere på kolnr for at få den rigtige kolonne.

Det lyder rigtigt nok med at der kommer til at stå 2 i kolonne b og C. Det afhænger af hvor mange poster du har i basen med varenummer X, hvis der er 2, kommer der til at stå 2.

Du skal blot gøre præcis som beskrevet.
Avatar billede spoi Nybegynder
18. november 2003 - 13:05 #29
hmm får det stadig ikke til at virke- det kommer masser af fejlmeddelelser: bla run time error 91
Bla her Set startcelle = varer.Range(gruppecelle & startcelle)

Men hvorom alt er har jeg faktisk fået det nogenlunde til at virke via LOPSLAG og Autofilter. Det er bare ikke helt optimalt da man hele tiden skal ind og se alle og derefter igen feks kun bolte, da listen bliver opdateret løbende.
Så det der egentlig skal ske er at tomme linier i ark2,ark3 osv skal slettes men der skal samtidig opdateres så de nyeste varer er kommet med fra ark 1. Dette kunne både gøres når man åbner regnearket og som en knap hvor man løbende opdaterer listerne.
Avatar billede spoi Nybegynder
18. november 2003 - 13:46 #30
Nu har jeg lagt en opdateringsknap på hvert ark(ark2-6)og har slået autofilter til.
Har indspillet en makro til knappen, der ser "alle varer" og bagefter "ikke tomme" felter.
Nu mangler jeg så den der opdaterer alle ark når jeg åbner mit regneark - hvordan gør jeg det? Dvs opdaterer ark2-6 på samme måde
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