Print side | Luk vindue

Kopiere data fra dele af kolonne

Udskrevet fra: Dansk Regneark Forum
Kategori: Hjælp til regneark.
Forum navn: Makro og VBA
Forum beskrivelse: Hjælp til Makroer og VBA-programmering
Web-adresse: https://forum.excel-regneark.dk/forum_posts.asp?TID=396
Udskrevet den: 18.Maj.2024 kl. 20:10


Emne: Kopiere data fra dele af kolonne
Besked fra: Bladsgaard
Emne: Kopiere data fra dele af kolonne
Posteringsdato: 13.Jul.2011 kl. 11:02
Hej,
 
I et regneark, som jeg henter på en kundes hjemmeside, har jeg brug for, i en bestemt kolonne, at kopiere værdierne fra alle celler (indtil der kommer en blank) efter en bestemt trigger-værdi (en header/overskrift).
Værdierne skal indsættes i samme række, men i en anden kolonne.
Processen gentager sig adskillige gange ned gennem den pågældende kolonne.
 
Eksempel:
 
Kolonne D indeholder celler med forskellige værdier inkl. tekst. Jeg ønsker at gennemsøge kolonnen fra toppen og nedefter, og når man møder trigger-værdien/teksten "Required Qty.", skal værdierne (decimal tal)i de efterfølgende celler i kolonnen kopieres over i kolonne B, indtil der kommer en tom celle (som ikke skal kopieres.
Når man møder triggeren igen, gentages processen (ca. 20 gange).
 
Jeg kan ikke komme i tanke om en måde at gøre det med almindelige formler, så måske det kræver en makro?
 
Jeg takker på forhånd for al input!



Svar:
Besked fra: H_Frandsen
Posteringsdato: 13.Jul.2011 kl. 13:45
Hej Bladsgaard
 
Er ikke den store makrohaj men kan måske give mit besyv med.
 
Hvis du i kolonne B laver en formel =HVIS(A2<>"Required Qty";HVIS(A2<>"";A2;"");""), Denne sørger for at hvis cellen er blan eller indeholder Required Qty vil den nye celle forblive blank eller vil den retunere værdien i kolonne A.
 
Efterfølgende kan der laves et autofilter hvorpå den filteres på "ikke tomme" i kolonne B hvilket gør du kun har tal tilbage hvor efter dette kan kopieres til et nyt område
 
Hvilket evt kan automatiseres via en makro
 
Range("A1").Select
    Selection.AutoFilter
    Selection.AutoFilter Field:=2, Criteria1:="<>"
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Selection.Copy
    Sheets("Ark3").Select
    Range("A1").Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
    Range("C12").Select
 
Måske kan det bruges
//Henrik


Besked fra: Bladsgaard
Posteringsdato: 13.Jul.2011 kl. 15:05
Hej Henrik,
 
Jeg har selv overvejet IF-kommandoer, men kan ikke se, hvordan jeg skal få det til at virke, så kopieringen starter i den celle, der kommer i kolonnen lige efter trigger-værdien "Required qty.", og stopper igen, når den møder en tom celle, længere nede i kolonnen.
 
Når jeg indsætter din foreslåede kode, kopieres alt celle-indhold fra celler, der ikke er tomme til en ny kolonne?
Jeg har brug for at begrænse kopieringen til kun at omfatte cellerne umiddelbart efter trigger-værdien og indtil 1. tomme celle.
 
Når jeg forsøger at køre makroen, får jeg en "AutoFilter method of Range class failed"-fejl?
 
Obs: Min version af excel er '07 engelsk.


Besked fra: H_Frandsen
Posteringsdato: 14.Jul.2011 kl. 12:01
Hej Bladsgaard
 
Kunne du ligge et ark op en et eksempel
 
//Henrik


Besked fra: Bladsgaard
Posteringsdato: 14.Jul.2011 kl. 13:28
Hej,
 
Der skulle være indsat eksempel på det regneark, jeg roder med.
 
Det, der for mig er interessant, er de sektioner af rækker, hvor overskrifterne i hver kolonne hedder Date, CUM Qty., Required Qty. osv.
Under disse overskrifter kommer der et antal rækker, som indeholder tal.
 
Det jeg ønsker, er i princippet at indsætte en ny kolonne efter kolonne A (så der bliver en tom kolonne B).
Herefter vil jeg gerne have kopieret tallene i rækkerne under overskriften "Required Qty." til den nye kolonne B.
Det er kun tallene efter "Required Qty.", der ønskes kopieret, men der kommer adskillige sektioner ned gennem arket, hvor processen gentager sig, så der er adskillige sektioner, der skal kopieres.
 
Hvis det kan laves, så måtte der yderligere gerne være en funktion, der ændrer datoformatet i kolonne A i de samme rækker, hvor der skal kopieres indhold.
I stedet for formatet åååå-mm-dd, skal formatet være dd.mm.åååå (det sker ikke automatisk, når man ændrer formatteringen af cellerne i kolonne A).
 
Jeg håber det giver mening!
 
Bo
 
/uploads/185/Example_-_demand.xls" rel="nofollow - uploads/185/Example_-_demand.xls  


Besked fra: Allan
Posteringsdato: 14.Jul.2011 kl. 15:23
Hej Bo,
 
Et forslag.
Hvis du selv laver handlingen med at sætte en tom kolonne B ind, så prøv at sætte denne formel ind i B1.
=HVIS(OG(D1<>"";ER.TAL(D1*1));D1;"")
 
Denne formel, trækker du så fra B1 og helt ned til bunden af dit ark i B kolonnen.
For at få formlen til at virke i dit ark, skal du huske at formatere cellen som 'Tal' eller 'Standard' da den er formateret som 'tekst'.
 
Formlen undersøger om der står noget som ligner et tal i 'Required Qty', og hvis der gør, skriver den tallet i kolonne B.
 
//Allan
 


Besked fra: Bladsgaard
Posteringsdato: 14.Jul.2011 kl. 15:56
Hej,
 
Jeg fik oversat formlen til engelsk - den ser nu således ud:
=IF(AND(D1<>"";ISNUMBER(D1*1));D1;"")
 
Det virker helt efter hensigten - mange tak!
 
Bo


Besked fra: Allan
Posteringsdato: 14.Jul.2011 kl. 20:13
Velbekomme Bo, jeg havde ikke fanget det med den engelske version Wink.
Godt du fik den oversat.
 
//Allan


-------------
MVH

Allan
https://www.excel-regneark.dk" rel="nofollow - Excel-regneark.dk - Gratis skabeloner til Excel
Få over 120 ekstra funktioner med Danmarks bedste add-in



Print side | Luk vindue