Just nu i M3-nätverket
Jump to content

lista värden


frodo

Recommended Posts

Hej

Jag är på jakt efter följande:

Jag har i xlblad1 två olika värden i cellerna A1 ex 1 och A2 ex2 . Nu vill jag hämta värden som ska tillhöra siffran 1 från blad2 Där vet jag att värdet finns i kolumn A från rad 1 till och med 10. dessa vill jag klistra in bredvid A1 i blad1. dvs i kolumn b rad2 - 11. Det i sig har jag löst men frågan är hur jag med hjälp av kod i en loop kan göra samma sak med värdet i A2 fast då ska värdet i a2 först flytas ner till A12 innan värdena klistras in.....hm var det nån som förstod det där:-))

 

JAg vill alltså lista alla inklippta värden i b kolumnen och värdena i a kolumen ska följa med......

 

Låter kanske lite rörigt men om nån fattade så tar jag tacksam emot tips

 

 

 

Link to comment
Share on other sites

Ja du, du verkar vara halvägs..

 

Om du har ett antal celler du vill gå igenom så kan det nästan enklast låta sig göras med hjälp av Cells(rwIndex, colIndex) där de två indexen räknas upp tillbörligt.

Vi är i läget då du har kopierat ett stycke med celler och du vill flytta ned värde i cell A2 till cell A12

Enklast kanske är

Cells(rwIndex + step,1) = Cells(rwIndex,1)
Cells(rwIndex,1) = ""
rwIndex = rwIndex + step

där rwIndex har initalvärdet 2 och step har värdet 10, dvs antalet rader du vill flytta ned värdet i A2.

Nu har du samma utgångsläge som inför första kopieringen så det är bara att fortsätta i samma stil.

 

Om det är flera värden i kolumn A som du vill flytta ned, dvs värden du vill fortsätta stega igenom så måste givetvis alla flyttas ned de tio stegen, då kanske följande kod är mer passande:

 

Application.CutCopyMode = False
Range(Cells(rwIndex, 1), Cells(rwIndex+step,1).Insert Shift:=xlDown

 

Första raden så att dina värden du kopierat inte riskerar följ med. Beroro på hur du kopierat.

 

Hoppas det fungerar.

 

Och se gärna till att säkra adresseringen med en WITH-sats

With Worksheets("Blad1")

.Cells(...)

...

End With

 

Till sist - när du gör sådant här är det bra att pausa skärmuppdateringen så går det lite snabbare:

Application.ScreenUpdating = False/True

i början/slutet av koden är bra att ha.

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Det funkar men hhur blir det om jag inte skulle veta på förhand hur många rader jag kopierar. Dvs vissa gånger 10 och andra 15?

 

Link to comment
Share on other sites

Det är väl bara att räkna?

Du adresserar väl området som ska kopieras? Antalet celler kan räknas, om du inte vet det redan, med exempelvis:

Range("A1:A15").Cells.Count

Eller om det är rader du är ute efter

Range("A1:A15").Rows.Count

Eller kolumne

Range("A1:A15").Columns.Count

Eller så för du stega ut i kolumn B och se hu långt ned du kopierat:

Cells(rwIndex, 2).End(xlDown)

Ger dig sista cellen i kolumn två som det finns ett värde i. Ja, den fungerar exakt lika som om du ställer dig i en cell på bladet och trycker CTRL+pil ned. Testa och se. Spela in makron om du är nyfiken på semantiken i VBA (men ta bort alla Activate, Select och Selection som inspelning av makro ger om du ska använda koden)

 

 

 

/T

 

Even when we know we´ll never find the answers, we have to keep on asking questions.

 

Link to comment
Share on other sites

Archived

This topic is now archived and is closed to further replies.



×
×
  • Create New...