05. november 2003 - 15:12Der 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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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
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.
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
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??
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.
Æ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.
Æ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
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
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!
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.
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...).
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.
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
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
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.
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.
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
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.