Avatar billede mrkr Juniormester
22. september 2009 - 14:14 Der er 4 kommentarer og
1 løsning

kode der gentager det samme for 100 celler

Jeg har selv brygget denne kode sammen, men den er desværre håbløs udstruktureret.

I kolonne E1 - E100 står der nogle tal som der skal søges på.
Den skal herefter kopiere data fra kolonne E+F+G til kolonne A+B+C, i den række som indeholder samme data i kolonne A, som der står i kolonne E.
De data der skal kopieres fra E+F+G til A+B+C er meget sjældent i samme linje.

Min kode virker i og for sig godt nok, men jeg ønsker ikke at skrive den samme kode 100 gange (en gang for hver celle)

Er der ikke en der kan flette noget med....
For 1 to..... ind i det :-)

Eks.

kol a    kol e
1        1 
2        2
2a      3
3        4
3a      5
4        6
4a      7
4b      8




Sub Makro1()
Dim specnr As Variant
Dim specdata As Variant

specnr = Range("e1")
Range("e1").Select
ActiveCell.Range("A1:C1").Select
specdata = ActiveCell.Range("A1:C1")

Columns("A:A").Select
Selection.Find(What:=specnr, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate

ActiveCell.Range("A1:C1") = specdata



specnr = Range("e2")
Range("e2").Select
ActiveCell.Range("A1:C1").Select
specdata = ActiveCell.Range("A1:C1")

Columns("A:A").Select
Selection.Find(What:=specnr, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate

ActiveCell.Range("A1:C1") = specdata


specnr = Range("e3")
Range("e3").Select
ActiveCell.Range("A1:C1").Select
specdata = ActiveCell.Range("A1:C1")

Columns("A:A").Select
Selection.Find(What:=specnr, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate

ActiveCell.Range("A1:C1") = specdata

' osv........ men det er lidt tungt at man skal skrive det samme for e1 til e100


End Sub
Avatar billede tg4600 Nybegynder
22. september 2009 - 14:34 #1
du skal nok starte med at kigge på:

For Each myCell in Range("E1:E100")

  specnr = Range(myCell)
'  Range("e1").Select
'  ActiveCell.Range("A1:C1").Select
  specdata = Range("A" & myCell.Row & ":C" & myCell.Row)

...osv

Next

Denne løkke gennemløber koden for hver celle i dit Range, og cellen kaldes for myCell..
Avatar billede mrkr Juniormester
22. september 2009 - 14:42 #2
Jeg har forsøgt at rette koden til, så den ser således ud:


Sub Makro1a()
Dim specnr As Variant
Dim specdata As Variant
Dim mycell As Variant

For Each mycell In Range("E1:E100")

  specnr = Range(mycell)
  specdata = Range("A" & mycell.Row & ":C" & mycell.Row)

  Columns("A:A").Select
  Selection.Find(What:=specnr, After:=ActiveCell, LookIn:=xlFormulas, LookAt _
        :=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:= _
        False, SearchFormat:=False).Activate

  ActiveCell.Range("A1:C1") = specdata

Next
End Sub



MEN DEN VIRKER DESVÆRRE IKKE.
HVOR GØR JEG NOGET FORKERT?
Avatar billede excelent Ekspert
28. november 2009 - 17:37 #3
Sub tst()
On Error Resume Next
For Each c In Range("E1:E100")
Range("A1:A1000").Find(c, LookIn:=xlValues).Select
Selection.Offset(0, 1) = c.Offset(0, 1)
Selection.Offset(0, 2) = c.Offset(0, 2)
Next
End Sub
Avatar billede excelent Ekspert
30. november 2009 - 16:57 #4
hvordan går det ?
Avatar billede mrkr Juniormester
17. januar 2010 - 20:10 #5
Hej Excelent

Jeg var kommet helt fra dene tråd.
Jeg har langt om længe fået testet og den virker.

Mange tak for hælpen
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester