Just nu i M3-nätverket
Gå till innehåll

Excel artikelregister/försäljning


rakiii

Rekommendera Poster

 
-Försäljning/senaste månaden
Leverantör               Artikelnr      Kvantitét
GB                       456789          10
GB                       245678          20
GB                       879456          5
Swedish Match            567845          10
Swedish Match            876456          20

-Lager
Leverantör              Artikelnr      Kvantitét
GB                      456789           5
GB                      245678          15
GB                      879456          10
Swedish Match           567845          20
Swedish Match           876456          10

-Inaktuella
Leverantör             Artikelnr
GB                     245678
Swedish Match          567845

 

Jag har tre blad/tabeller som ser ut som ovan. Ett blad som innehåller alla artiklar som är sålda förra månaden, ett blad som innehåller alla artiklar och hur många av varje som finns hemma samt ett tredje som

innehåller alla artiklar som inte är aktuella att ta hem av någon anledning. Inaktuella/spärrade artiklar kan vi kalla detta.

Nu vill jag sammanfoga dessa tabellerna och få ut ett "beställningsförslag" utifrån detta i ett nytt blad.

Den ska arbeta enligt följande...

- Den bör titta på hur många som finns hemma, finns det mindre än 5 ska artikeln beställas. Finns det 3 hemma ska förslaget den räknar ut vara 2st att ta hem.

- Den bör titta på hur många som såldes förra månaden och jämföra mot vad som finns hemma. Två veckors omsättning är lagom att alltid ha hemma.

Såldes det 20st förra månaden och lagret är 5st ska den räkna ut ett förslag på att ta hem 5st.

- Till sist så måste den undvika alla artiklar som finns med i bladet "Inaktuella" för dessa skall inte beställas.

 

Lite krångligt kanske, fråga på om det är något som är oklart.

Nu till den stora frågan...HUR gör jag detta med hjälp av excel?

Länk till kommentar
Dela på andra webbplatser

Jag skulle säga

1: Ställ upp en tabell med alla dina artikelnummer i. Dessa borde vara unika.

2: En formel söker i inaktuella bladet och markerar artikeln som inaktuell om träff sker.

3: En liknande formel söker bland antal sålda och hämtar detta värde.

4: En till liknande formeln söker i lagret och returnerar antalet där

5: En formel räknar ut det du önskar.

6: Du lägger till sist på exempelvis ett Autofilter och filtrerar ut alla som måste beställas.

 

Formel för 2, i stil med

=OM(ÄRFEL(PASSA(A2;Blad2!B:B;0));Falskt;Sant)

Dvs sant om träff, falskt om inte.

Formel 3 och 4 i stil med

=LETARAD(A2;Blad3!B:C;2;FALSKT)

eller om Excel 2010:

=VTSÖK(A2;Blad3!B:C;2;FALSK)

 

Där då ditt artikelnummer står i A2 samt att du anpassa bladnamn och referenser efter där dina tabeller finns. Första kolumnen i referensen för LETARAD måste vara den som artikelnumret står i.

 

Formeln i 5 borde du klara av själv... :)

 

Sista ord: Har du Excel 2007/2010 använda Excels tabellformat så blir kanske formlerna lite enklare.

Länk till kommentar
Dela på andra webbplatser

Många tips och idéer, stort tack!

 

Bladet med alla artiklar uppdateras varje dag (kopieras in från en annan fil). Går det på något sätt skapa en loop som går igenom hela bladet med artikelnummren och sedan "printar" ut det på ett helt nytt blad?

Länk till kommentar
Dela på andra webbplatser

Kanske lite sent på kvällen men nu förstår jag icke exakt vad du menar...

 

Försök igen så tar jag en titt på vad du skrivet efter jag sovit några timmar.

Länk till kommentar
Dela på andra webbplatser

Bladet med artiklar är dynamiskt kan man säga och uppdateras varje dag med nya värden. Då tänkte jag om det gick att skapa en "loop" som gick igenom hela bladet med artiklar och förde över dessa till ett helt nytt blad.

Länk till kommentar
Dela på andra webbplatser

Det finns flera vägar att nå dit du vill. Enklast kanske är om vi håller oss borta från VBA-kod.

 

Hur många artiklar handlar det om på ett ungefär? Om begränsat antal, om du vet hur många det finns som max, är det enklaste formler som helt enkelt hämtar artikelnumren från bladet. Så enkelt som

=OM(ArtikelBlad!A3="";"";ArtikelBlad!A3)

och sedan i tabellen har formler i stil med

=OM(A2!="";"gör något";"")

 

Andra alternativet är att manuellt distribuera ut listan med artikelnummer

 

och tredje att automatisera det andra alternativet via VBA-kod.

men hur många platser behöver du samtliga artiklar? jag tror inte du gett mig hela bilden av vad din bok gör så att säga. Hämtar den möjligen data ur en databas? Hur uppdateras siffrorna av försäljningen och lagerhållningen?

 

Vilken version av Excel?

 

En tanke till:

Jag skulle, som sagt, bygga upp det enligt

 

1: En sida med ALLA artikelnummer i. ALLA. Här utför du alla beräkningar och samla in alla data. Nya artikelnummer skrivs in här, gamla kan stå kvar eller tas bort.

2: En sida med försäljningsstatistik

3: En sida med lager.

 

Om nu boken är såpass enkel.

Länk till kommentar
Dela på andra webbplatser

Tack för att du tar dig tid. Det uppskattas :)

 

Det handlar om ganska många artiklar, antalet varierar så själva "kopieringen" till det nya bladet måste isåfall vara "dynamiskt" eller vad man ska säga.

 

VBA kod känns ju vettigt på ett sätt fast svårt då jag saknar kunskap. Fungerar det i alla office versioner? inget tillägg etc. som måste installeras?

 

Jag kör på version 2003...ganska old school m.a.o. ;)

 

Jag är med på en sida med statistik och en lager. På nåt sätt skulle jag vilja bygga ihop dessa två per automatik till en sida som då innehåller alla artikelnr. Därifrån kan jag sedan filtrera o.s.v.

 

En annan fråga....kan man på något sätt använda "villkorstyrd formatering" inom en pivottabell för att färga celler/text o.s.v.?

 

Nu är jag trött i skallen så det kanske är svårt att förstå vad jag menar :D

Länk till kommentar
Dela på andra webbplatser

men har du fler än dessa blad? Lager, försäljning och inaktuella produkter?

Du vill ha ett blad med alla produkter och där får veta om du behövas köpa mer och hur mycket? Eller är det något annat vi pratar om?

 

men om vi säger att du har tusen artiklar som max. Skapa en tabell med tusen poster, men de formler som behövs. Kopiera sedan in så många artiklar som du har. 500 hundra, 800 hundra, upp till 1 000. Behövs mer? Utvidga tabellen. Börja med att bygga ett manuellt ark, om behövs kan man automatisera det som behövs.

 

Villkorsstyrning inom Pivot? I Excel 2007/2010 fungerar det som vanligt ivartfall. Om det fungerar i Excel 2003 vet jag inte men i kompatiblitetsläge går det att spara en fil med formatering i Pivot utan problem.

Länk till kommentar
Dela på andra webbplatser

  • 2 veckor senare...

Jag har ett blad för "lager" (antal etc.), ett för "försäljning" och ett blad för alla "inaktuella" produkter.

Vi pratar om samma sak men jag har nog svårt att förmedla vad jag vill att den ska kunna göra :)

 

Antal artiklar kan vara uppemot 10000. Någon form av automatisering skulle behövas ser jag. Blir omständigt att lägga in formel för formel på varje rad.

 

Vad jag skulle vilja försöka göra är att skapa en "slinga/loop" som letar i bladet "lager" och för över all information där till ett helt nytt blad. Hittar den produkten i bladet "försäljning" tas informationen med därifrån och hittar den produkten i bladet "inaktuella" så hoppar den över denna artikeln och går vidare på nästa etc. Ifrån det nya bladet kan jag sedan filtrera och visa informationen som jag vill.

Vad jag tänker är att bladet "lager", "försäljning" och "inaktuella" är som en databas och uppdateras dagligen. Det fjärde bladet hämtar bara informationen och presenterar det på ett bra sätt.

 

Fick ordning på vilkorstyrning i pivot nu så det var nog bara nåt fel jag gjorde :)

Länk till kommentar
Dela på andra webbplatser

Jag har försökt styra dig bort från VBA-kod men det låter som om du önskar att det ska automatiseras och då behövs det lite kod.

Nya bladet är helt tomt antar jag.

 

Sub MyCopier()
Dim rnSource As Range
Dim rnTarget As Range
Dim rnInvalid As Range
Dim myRn As Range
Dim c As Range
'din nya tabell, nya värden
Set rnSource = Blad1.Range("a1").CurrentRegion
'målet, antar rubrikrad, inget annat på bladet
Set rnTarget = Blad3.Range("a2")
Dim i As Integer
i = 0
'inaktuella värden
Set rnInvalid = Blad2.Range("a:a")
On Error Resume Next
For Each myRn In rnSource.Columns(1).Cells
   	If myRn.Row <> 1 Then 'antar rubrikrad
       	Set c = Nothing
       	Set c = rnInvalid.Find(myRn, lookat:=xlWhole)
       	If c Is Nothing Then
           	rnTarget.Resize(1, 3).Value = myRn.Resize(1, 3).Value
           	Set rnTarget = rnTarget.Offset(1)
           	i = i + 1
       	End If
   	End If
Next myRn
MsgBox "Kopierade " & i & " värden", vbOKOnly
End Sub

 

Anpassa referenserna efter dina förutsättningar. Dvs ändra tilldelningen av rntarget, rnSource och rnInvalid så att det passar din arbetsbok.

 

Om denna funktion går långsamt går den att snabba upp en aning via exempelvis lägga till

Application.Screenupdating = False/True

innan/efter man For Each-slingan.

 

ed: Missade en detalj, raden

rnTarget.Resize(1, 3).Value = myRn.Resize(1, 3).Value

utför kopieringen, enbart värden. Tre kolumner kopieras utgående från att ID värdet står i kolumn ett i det refererade området.

Länk till kommentar
Dela på andra webbplatser

Tack för svar Monshi!

Hur skulle ditt exempel kunna se ut om jag istället väljer att har all data sparad i separata excelfiler/arbetsböcker istället för att ha de på tre olika kalkylblad?

Hämta informationen från: lager.xsl | forsaljning.xsl | inaktuella.xsl

 

 

Länk till kommentar
Dela på andra webbplatser

Ingen större ändring av koden. Två små saker måste ändras

 

1: Koden måste se till att böckerna den är beroende av är öppna. Typ

Dim wbLager as Workbook
Set wbLager = Workbooks.Open(("Lager.xls")

för att öppna. Om bok redan kan vara öppen gör man bra i att testa för det:

On Error Resume Next
Set wbLager = Workbooks("lager.xls")
If wbLager Is Nothing Then Set wbLager = Workbooks.Open("lager.xls")

 

2: När alla böcker är öppna, bara att sätta referenserna:

Set rnSource = wbLager.Worksheet("Blad1").Range("a1").CurrentRegion

Exempelvis.

 

3: Om koden öppnar en bok då är det även bra om koden stänger densamma när den är klar:

wbLager.Close False

OM koden öppnat boken...

 

Dvs öppna och skapa referenser och sedan samma kod som förut.

 

 

Länk till kommentar
Dela på andra webbplatser

  • 1 month later...

Har prövat ett tag nu med vanliga formler "LETARAD" etc. och det går ganska trögt i och med att det är ganska stora mängder data. Har prövat lite VBA men eftersom jag aldrig tidigare gjort något sånt fastnar jag ganska snabbt vid ett problem :)

Därför skulle jag behöva hjälp med ett exempel...

 

"BLAD1" - innehåller mina produkter

Kolumn A: artikelnr

Kolumn B: produkt

Kolumn C: antal

 

"BLAD2" - innehåller alla produkter jag sålt

Kolumn A: artikelnr

Kolumn B: antal sålda

 

"BLAD3" - innehåller de produkter som är inaktuella

Kolumn A: artikelnr

 

Vad jag vill göra är kopiera "BLAD2" och "BLAD3" in i "BLAD1" till Kolumn D resp. Kolumn E via en "knapp" etc.

Finns produkten från "BLAD3" ska den i "BLAD1" ersättas med JA om inte NEJ i Kolumn E

Finns produkten från "BLAD2" ska den i "BLAD1" ersättas med antal sålda i Kolumn D

 

Helt gröngöling när det gäller detta så det skulle uppskattas med exempel hur jag får in VBA koden i mitt exempel nedan.

produkter.xls

Länk till kommentar
Dela på andra webbplatser

Jag får fundera. kanske finns enklare vis.

 

Om jag skriver om det du har och önskar att få i lite andra ord:

Blad1 är en lista med alla produkter. Den är lång, många produkter/rader, och relativt statisk. Innehåller lagersaldo.

Blad2 är lista med dagens omsättning. Uppdateras dagligen med antal sålda.

Blad3 är dagens utgångna. En produkt förekommer bara där en gång, när den markerats som inaktuell är den inaktuell.

 

Vad du vill få fram är en slutrapport med lagersaldo samt möjlighet att ta bort inaktuella produkter.

 

funderar...

Spontant varför inte skapa en kronologisk tabell? Två tabeller.

1: En tabell med alla dina artikelnummer. Artikelnummer, namn och eventuella data om produkten. Dock inget saldo/antal.

2: En tabell där artikelnumret används som unik nyckel med kolumnerna

ArtNr - Datum - Händelse - Antal (- Inaktuell)

 

Sista inom parentes lite osäker, får se hur det exakt hanteras.

Händelser som kan ske är initialt två, "Inköp" och "Sålt".

Vi kan utvidga antal om det behöv, rapportering av Inaktuella ska nog in här också.

 

Tanken är alltså att samla in dina data och kopiera in allt som händelser i en lång tabell och sedan skapa en rapport utifrån denna tabell. Om du sparar kronologiskt kan du även få fram en bra historik....

ja, en bild:

post-8996-0-73009700-1308903286_thumb.png

säger nog enklast vad jag vill ha sagt.

Ingångsvärde positivt. Försäljningar negativt. En pivotrapport som sammanställer dina data. Om man vill kan man hämta namnet på produkten ur din produktlista. Vi noterar att du har negativt saldo på produkt 2253, Citroner.

 

Nu vet jag inte hur omfattande dina data är, Excel 2003 har möjlighet att hantera cirka 65 000 rader. Fast om så mycket data kanske egentligen allt ska in i en databas? Men om många poster kan man iofs komma runt det hela genom att skapa veckosammanställningar som sparas, kanske enskilda dagar på sikt inte är intressant. Eller månads...

 

Bifogar boken jag lekt med

Kopia av produkter.xls

Länk till kommentar
Dela på andra webbplatser

Säg att det är max 20 000 poster i varje blad men med massa formler som jag har nu går det ganska trögt och kanske skulle kunna snabbas upp med VBA?

 

Det där med "kronologisk tabell" verkar intressant men det behöver för min del inte vara riktigt så avancerat. Datum och Händelse kan vi alltså ta bort.

Jag kan göra det ännu enklare och stoppa in "inaktuella" direkt i artikeldatan

BLAD1 = Artikeldata - Innehåller endast information om alla produkter med artikelnummer som unik nyckel

  • Kolumn A - Artikelnummer
  • Kolumn B - Produkt
  • Kolumn C - Utgående - Värde J/N
  • Kolumn D - Vikt eller vad jag nu har för data.
  • Kolumn E - O.s.v.

BLAD2 = Sålda enheter - Innehåller sålda enheter under en vecka, unik nyckel artikelnummer.

  • Kolumn A - Artikelnummer
  • Kolumn B - Antalet sålda enheter

BLAD3 = Antal i lager - Innehåller lagerantal med artikelnummer som unik nyckel

  • Kolumn A - Artikelnummer
  • Kolumn B - Lagerantal

BLAD4 = Sammanställning - Här sammanställs alla blad och skapar utefter detta en pivottabell för att enkelt presentera resultatet.

  • Kolumn A - Artikelnummer
  • Kolumn B - Produkt
  • Kolumn C - Inaktuell - Värde J/N
  • Kolumn D - Vikt eller vad jag nu har för data.
  • Kolumn E - O.s.v.
  • Kolumn F - Sålda enheter - Plockar värdet från BLAD2, unik nyckel artikelnummer
  • Kolumn G - Lagerantal - Plockar värdet från BLAD3, unik nyckel artikelnummer

produkter.xls

Länk till kommentar
Dela på andra webbplatser

Om VBA-kod kan snabba upp det eller ej säger jag nja till. I sig om man har formler som löser ett problem bör man hålla sig till formler. I princip.

 

Det finns några sätt att snabba upp formlerna:

1: Stäng av automatiska beräkningarna. Beräkna bara när du vill. (manuellt eller via knapp/VBA)

2: Flytta ut beräkningsdel i annan bok. När denna bok öppnas uppdateras denna automatiskt mer eller mindre.

3: Göra om tabellerna så att de passar in i en Pivot. Enklast är det ju om du kan ha x antal tabeller som uppdateras från annan källa, infogar en nyckel i dessa (händelse) och sedan helt enkelt kopierar ihop dessa i en tabell. Som pivot sammanställer.

Dvs alla tabeller är formaterade på samma sätt, data i samma kolumner, och det är då bara att kopiera in dem och uppdatera Pivot.

Detta var tanken i mitt exempel, att händelsen ges i raden och inte rubriken varvid en Pivot enkelt kan sammanställa.

 

Men - exakt vad är det du vill få ut som slutresultat? Är det lagersaldo samt vilka produkter som markerats inaktuella?

Vad vill du göra med detta saldo? Kopiera in/uppdatera saldo-tabellen? Hur ska rätt data in på rätt plats? Alla produkter måste då återfinnas i rapporten.

Inaktuella? Samma sak - om vi skapar en rapport, hur ska dessa data in i din grundtabell?

 

Med dessa frågor kommer jag tillbaka till din lösning, en tabell och en massa formler.

Ladda upp ett exempel med dina formler så tar jag en titt på dessa och eventuell VBA-kod som kan snabba upp det. Detta om du nu inte tror att en pivot kan lösa dina problem.

Länk till kommentar
Dela på andra webbplatser

Grunden är en tabell med all artikeldata, egentligen bara information. På varje rad i tabellen ligger en formel för att hämta information från andra blad i arbetsboken. I nuläget ligger det 2-4 formler på alla rader. Totalt max 20 000 rader. Från denna tabellen skapar jag därefter en pivottabell för att sammanställa tabellen.

 

1. För att hämta sålda/saldo

=OM(ÄRFEL(VTSÖK(C2;'BLADET'!B:C;2;0));0;VTSÖK(C2;'BLADET'!B:C;2;0))

2. För att se om produkten finns i listan "inaktuella"

=OM(ÄRFEL(PASSA(C2;'BLADET'!B:B;0));"NEJ";"JA")

Det med att ha en händelse låter intressant. Får fundera vidare på detta och se om det går att lösa.

Bra tips att stänga av automatiska beräkningar. Det kan nog hjälpa en hel del att snabba upp arbetsboken!

 

Frågan jag har är egentligen bara vilket som är snabbast. Mitt exempel ovan för att föra över information från ett blad till ett annat eller att låta det göras via VBA?

Länk till kommentar
Dela på andra webbplatser

Mmh, det där kan vi snabba upp en del.

 

1: Lägg till en kolumn i vilken du använda PASSA för att söka reda på rätt rad

=PASSA(C2;Bladet!B:B;0)

2: Använda INDEX i separat kolumn för att hämna värden du vill ha, exempelvis:

=OM(ÄRFEL(E2);0;INDEX(Bladet!C:C;E2)

respektive

=Om(ÄRFEL(E2);"NEJ";"JA")

Det som tar tid är PASSA-beräkningen, med denna lösning har jag minskat dessa till en tredjedel av vad som var tidigare..

 

3: Ett litet "knep"

man kan skapa en cell på bladet i vilken man skriver ett SANT/FALSKT värde, säg att detta sker i H1:

=OM(H1;PASSA(....);"beräknas ej")

och sedan lägger man till en liten kodsnutt:

Private Sub Worksheet_Activate()
Me.Range("h1") = True
End Sub

Private Sub Worksheet_Deactivate()
Me.Range("h1") = False
End Sub

som helt enkelt skriver till den cellen när bladet aktiveras/deaktiveras. Detta ger att den krävande PASSA-satsen enbart beräknas när bladet är aktivt.

Men med den förbättring jag gjort ovan (punkt 1 och 2) kanske VBA-koden ej behövs.

 

 

(4: en liten förbättring, räkna fram området PASSA ska räkna på. Ett dynamiskt namn löser det smidigt. Eller tabellformatet i Excel 2007/2010)

 

Samt - dina formler - VTSÖK? Excel 2010? Inte 2003?

Länk till kommentar
Dela på andra webbplatser

Stort tack! Jag ska pröva att leka lite med PASSA/INDEX!

Är PASSA/INDEX mycket snabbare än LETARAD/VTSÖK?

 

3:e tipset kan nog vara användbart så jag slipper beräkningar i onödan som tar tid och slöar ner arbetsboken :)

 

4:e - Är inte riktigt med på hur du menar?

 

Såklart så var mitt exempel tidigare lite fel. Det skulle varit LETARAD istället för VTSÖK då arbetsboken är gjord för 2003 versionen.

 

Skulle ändå vara intressant att se hur VBA skulle klara av detta. Mycket för att jag själv vill lära mig och förstå lite hur det funkar så jag i framtiden kanske kan använda det :)

Länk till kommentar
Dela på andra webbplatser

Dynamiskt område - ett område som bara omfattar din tabell.

 

Ett exempel:

=FÖRSKJUTNING(Blad2!A1;0;0;ANTAL(Blad2!A:A);4)

som skapar en referens till ett område på Blad2. Den räknar antal värden i A-kolumnen och skapar en referens som omsluter just så många rader. Och fyra kolumner genom det låsta värdet.

Spara denna formel i ett namn och använd detta namn. Osäker dock på om PASSA blir snabbare av det men tror det.

 

Att söka med PASSA eller LETARAD kostar nog lika mycket. Men i detta fallet kan du ersätta tre sökningar med LETARAD med en PASSA.

 

VBA-kod blir något i stil med

1: Stega genom tabell ett

2: för varje värde i tabell ett, söka i tabell två och tre

3: Vid träff kopiera.

Ja

Sub MyCopier()
Dim rnTabell As Range
Dim rnSeek1 As Range
Dim rnSeek2 As Range
Dim c As Range

Dim myCell As Range
' tabellen som alla artiklar finns i
Set rnTabell = Blad1.Cells(1, 1).CurrentRegion.Offset(1).Resize(, 1)
'tabell med försäljning
Set rnSeek1 = Blad2.Cells(1, 1).CurrentRegion.Resize(, 1)
'tabell med inaktuella
Set rnSeek2 = Blad3.Cells(1, 1).CurrentRegion.Resize(, 1)
'låser alla ovan till enbart första kolumnen, den med artnr.

'stegar igenom rnTabell
For Each myCell In rnTabell
   	If myCell <> "" Then 'användningen av offset ger en rad extra, den är tom
       	Set c = rnSeek1.Find(myCell) 'söker i tabell 1
       	If Not c Is Nothing Then 'om hittas, kopiera värde
           	myCell.Offset(0, 3) = c.Offset(0, 1)
       	End If
       	Set c = rnSeek2.Find(myCell) 'söker i tabell 2
       	If Not c Is Nothing Then
           	myCell.Offset(0, 4) = "Ja" 'om träff
       	End If
   	End If
Next myCell
End Sub

Passar in i bifogat ark. Alla tabeller måste starta i cell A1 och vara sammanhängande/bilda ett område.

produkter_VBA.xls

Länk till kommentar
Dela på andra webbplatser

Är användningen av dynamiska referenser är då för att låta PASSA bara köras genom de celler som innehåller ett värde, annars söker den genom hela kolumn A etc.? Om jag förstår rätt :)

Låter vettigt, borde snabba upp en aning iaf

 

Kanon nu har jag lite att leka med!

Tänkte på en sak i VBA-exemplet... Hade varit bra med t.ex. en knapp för att kunna radera innehållet i kolumn D och EBlad1, för att på så sätt manuellt kunna beräkna om värdet ifall något ändras i Blad2 eller Blad3.

Alternativt som kanske är bättre/enklare är att koppla knappen till en funktion som vi kan kalla MyCleaner() som utför raderingen av cellerna och automatiskt därefter går in i MyCopier() och utför kopieringen?

Hur skulle det kunna se ut?

Äter det lite kraft och slöar ner boken ännu mera kanske?

Länk till kommentar
Dela på andra webbplatser

Radera D&E:

Sub MyCleaner()
Blad1.Range("a1").CurrentRegion.Offset(1, 3).Resize(, 2).Clear
End Sub

exempelvis.

 

Dvs CurrentRegion ger referens till aktiva området.

Offset(1,3) flyttar referensen en rad ner och 3 kolumner till höger.

Resize(,2) sparar antalet rader men ändrar till två kolumner vilket blir kolumn D och E.

 

Dynamisk referens, precis. Begränsa antal celler PASSA/LETARAD söker igenom. Vet faktiskt inte om detta verkligen gör skillnad, har inte testat.

Länk till kommentar
Dela på andra webbplatser

Radera D&E:

Sub MyCleaner()
Blad1.Range("a1").CurrentRegion.Offset(1, 3).Resize(, 2).Clear
End Sub

exempelvis.

 

Dvs CurrentRegion ger referens till aktiva området.

Offset(1,3) flyttar referensen en rad ner och 3 kolumner till höger.

Resize(,2) sparar antalet rader men ändrar till två kolumner vilket blir kolumn D och E.

 

Dynamisk referens, precis. Begränsa antal celler PASSA/LETARAD söker igenom. Vet faktiskt inte om detta verkligen gör skillnad, har inte testat.

 

 

Fint, nu har jag jag lite att greja med i dagarna. Tack för hjälpen!

 

Ang. dynamisk referens. Måste jag skapa en referens för varje kolumn i mitt fall?

 

Säg att jag skapar en referens som heter myRef till =Blad1!$A$1:$D$10

Sen vill jag "anropa" denna i PASSA formeln. =PASSA(A1;myRef....;0)

Då anropar jag alla kolumner...går det att bara anropa kolumn A i myRef? typ myRef[A]

I excel 2007+ går ju detta med hjälp av en tabell men min arbetsbok ska köras i v. 2003

 

 

Länk till kommentar
Dela på andra webbplatser

=INDEX(myRef;;1)

 

ger dig första kolumnen enbart.

(=INDEX(myRef;1;) ger dig första raden i referensen)

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...