Udtræk af indtastet data, reduceret fra 600 linjer til 10-20-30 linjer.
Jeg troede jeg vidste noget om Excel, men kan se på de mange gdoe svar, at "jeg stort set intet ved" :)
Her er noget som jeg i hvert fald har kæmpet med i mange dage og ikke kan finde ud af at løse.
Mit udgangs punkt er et udtræk af en varedatabase, som jeg skal have krympet ind til en slags "pakkeseddel".
Vi taster dagligt ind på nogle ordresedler i Excel (2003 og 2007), som vi er glade for og de er tilpasset til os. Men, vi skal jævnlig udskrive dem for at gennemgå dem med personale og kunder, og her er så det usmarte... Vi får hver gang 8 tætskrevne sider med ca. 600 linjer, hvor af der oftest kun er indtastet data i eks. 10-20-30 af linjerne. Dvs. langt det meste på print, er overflødig og forvirrende.
Vi kunne godt tænke os, at vi på en fane i Excel i stedet, kunne læse kun netop de linjer der var skrevet data i, altså typisk 10-20-30 linjer (absolut max. vil være 40 linjer). De indtastede data, skal vis muligt, helst komme i den rækkefølge de står i (set i forhold til linjenumrene 1 til 600).
Fane 1: 600 præudfyldte linjer, hvor vi i en tom kolonne (Kolonne B) skriver et specifik optalt tal. I de andre kolonner (B til K) er der præudfyldt tekst og værdier, som har relation til det tal vi indtaster i kolonne B.
Fane 2: Her kunne jeg godt bruge, at der læses på "Fane 1" og udelukkende returneres de linjer, hvor der er indtastet værdier, dvs. typisk de første 10-20-30 linjer.
Det vil så give en udskrift der kun har de tal og relationer med, som vi har brug for at gennemgå.
Const ræk1 = 6 Dim antalRækker As Integer, ræk As Integer Dim antalBestilt As Integer, fraræk As Integer Public Sub reduktion() Rem Kopier fane1 Sheets("Fane 1").Select Sheets("Fane 1").Copy Before:=Sheets(2)
Rem Beregn antal rækker Sheets("Fane 1 (2)").Activate antalRækker = ActiveCell.SpecialCells(xlLastCell).Row
Rem Traverser rækker fra sidste-1 -> førstre række (sidste række skal altid med) fraræk = antalRækker - 1 For ræk = fraræk - 1 To ræk1 Step -1 If IsNumeric(Range("A" & ræk)) = True And Range("A" & ræk) <> "" Then antalBestilt = antalbestil + 1 Else Rem Er kolonne B med "Fed" - Overskrift/Gruppe If Range("B" & ræk).Font.Bold = True Then If antalBestilt = 0 Then Rows(ræk & ":" & ræk).Delete End If Else Rem Slet række uden antal Rows(ræk & ":" & ræk).Delete End If End If Next ræk End Sub
Tak for dit hint. Jeg har nu uploadet til Gratisupload, men det er nyt for mig hvad jeg skal gøre. Tror linket til filen er : http://gupl.dk/f/8si3jnauh9
Tak for dit forslag og din hurtige indspark :) Da jeg oprettede spørgsmålet, tror jeg at jeg var lidt fedtet med pointgivningen. Beklager! (Kan jeg ændre det sidenhen?) --- Jeg ved intet om VBA, men så kan jeg nu øve mig i det spæde.
I den simplificerede fil du fik, virker det nemt og overskueligt.
Jeg har kopieret mine faner over i dit eksempel, tilrettet linjestart og kan nu se at der er noget som driller lidt.
#1. Ved klik på din knap, kommer først en dialogboks: "Den formel eller det ark, du vil flytte eller kopiere, indeholder navnet 'Udskriftsområde', der allerede findes på destinationsarket. Vil du bruge dette navn?" Jeg tror det er fordi at jeg i min fane, har defineret hvilke dele af udskriften, som skal til printren når vi udskriver hele sedlen (og det har jeg forsat brug for). Det bevirker også at den færdige udskrift, er på 2-4 sider, men nu med meget får linjer.
#2. Ved afslutning af knap-kørselen kommer der en dialogboks: "Run-time error '1004': Metoden Activate for klassen Range mislykkedes" Mulig knapper herefter er <End> <Debug> og Help. Jeg ved ikke hvad det betyder :)
#3. I mine rigtige vaner, er der mange kolonner (Fra A til AD). Når de er sorteret, har jeg kun behov for enkelte af kolonnerne, eks fra kolonne A til C. Det kan jeg ikke finde frem til hvordan jeg kan tilpasse. Sagt med andre ord, så må reduktionen, godt slette nogle kolonner, eks. fra kolonne D til AD.
PS: Anvend "Kommentar", når svarer. "Svar" er kun til opgaveløser, der hermed mener at have et svar på din udfordring. Et Svar, som du kan godkende - kan du så evt. "Acceptere" for at give point - eller du kan "Afvise" det.
#2: <End> afslutter processen <Debug> Åbner VBA-vinduet og viser nøjagtigt, hvor fejlen er opstået. Anvendelse af Debug er altså til stor hjælp for udvikleren. F.eks. tag et skærmbillede og send dette.
#3: Er noteret - tages med i næste version.
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.