Avatar billede david_swahn Nybegynder
04. november 2008 - 22:24 Der er 15 kommentarer og
1 løsning

Makro _ Reference til kolonne i loop

Hej.

Jeg er igang med at lave en makro til en ække udregninger i excel. Jeg har problemer med referencen til kolonnens nummer. I forbindelse med referencen til kolonnen skal jeg bruge en variable.

Det fungerer for rækken (hvor Y er variablen):
Range("Q23").Value = Range("HA" & Y).Value

Men altså ikke for kolonnen (hvor X er variablen):
Range("Q24").Value = Range(X & "1").Value

Ifølge en kammerat kan problemet være at "A+1 ≠ B" og at variablen evt. skal konverteres for at fungere. Men vi ved ikke hvordan det skal gøres.

Nogen ide?
Avatar billede excelent Ekspert
04. november 2008 - 22:31 #1
Range("Q24").Value = cells(X,1).Value
Avatar billede david_swahn Nybegynder
04. november 2008 - 22:34 #2
&#8800 betyder Ulig (symbolet er måske utilgængligt her?)

Anyway, Subben ser ud som følger:

______________________________________________
X = 209
Y = 1

Do
X = X + 1
Range("Q24").Value = Range(X & "1").Value

  Do
  Y = Y + 1
  Range("Q23").Value = Range("HA" & Y).Value
  Range("HB" & Y).Value = Range("S27").Value
  'Range(X & Y).Value = Range("S27").Value

  Loop Until Y = 101

Loop Until X = 215

End sub
____________________________________________________

I den indre loop, skal 2 linie også erstatte af noget der kunne minde den pt deaktiverede 3. linie.

- David
Avatar billede excelent Ekspert
04. november 2008 - 22:34 #3
ups det skal være

Range("Q24").Value = cells(1,X).Value
Avatar billede david_swahn Nybegynder
04. november 2008 - 22:36 #4
Du svarer hurtigere end jeg opdatere min skærm!!! Impressed

Jeg prøver det lige! :)
Avatar billede david_swahn Nybegynder
04. november 2008 - 22:51 #5
Jeg kan bedst holde med det første forslag, husk at x skal referere til kolonnen(!) ikke rækken
det kan jeg godt ;)
(  Range("Q23").Value = Range("HA" & Y).Value  )

Men det virker ikke

Hvis det virkede kunne jeg også have brugt følgende linie i den indre loop
Cells(X & Y).Value = Range("S27").Value
(i stedet for den deaktiverede). Men det virker heller ikke.

Opsummeret er det altså referencen til >>Kolonner<< der volder mig problemer. :(
Avatar billede excelent Ekspert
04. november 2008 - 22:55 #6
cells( række , kolonne )

cells(1,1) er så celle A1
cells(1,2) er så celle B1
cells(2,2) er så celle B2

hvis X representerer kolonnen så skal det være :
Range("Q24").Value = cells(1,X).Value
Avatar billede excelent Ekspert
04. november 2008 - 23:04 #7
og følgende
Cells(X & Y).Value = Range("S27").Value
skulle se sådan ud
Cells(Y,X).Value = Range("S27").Value
under forudsætning af at X er kolonne og Y række
Avatar billede david_swahn Nybegynder
05. november 2008 - 02:36 #8
YESYESYES, Excelente!

Nu er den der jo!

Det der "&" fik nåede ellers at ødelægge mange celler hulter til bulter over hele arket! Og med genstart til følge undervejs :( -jeg var så optaget af det at jeg ikke så dit svar før for et øjeblik siden(...)

Det var en rigtig god hjælp, mange mange tak :)

- David Boye Swahn
Avatar billede excelent Ekspert
05. november 2008 - 15:14 #9
velbekom
Avatar billede excelent Ekspert
08. november 2008 - 19:21 #10
husk lige at lukke
Avatar billede david_swahn Nybegynder
09. november 2008 - 00:36 #11
Tak, det var jeg ikke opmærksom på. Men nu - Måske kan du hjælpe mig en ekstre gang inden... :)

Mit program afgiver nu en masse resultater fordelt i området: DB2:DE157

Heraf vil jeg gerne finde det største tal, >>men<< referere til kolonnens overskrift. Det vil være et af DB1:DE1.  (fx =DE1 hvis det største tal er DE57)

=største()

Akkurat tilsvarende ønsker en, i en ny celle, hvor jeg referere til Rækkens overskrift
Det vil tilsvarende være et af DA2:DA157.(fx =DA57 hvis det største tal er DE57)

Jeg ved dette vedrører for såvidt ikke længere makroer, hvis du synes jeg skal oprette en ny, gør jeg det i stedet. 

- David
Avatar billede excelent Ekspert
09. november 2008 - 13:48 #12
Function kol(rng As Range, valg As Long)
If valg = 1 Then kol = Cells(1, rng.Find(WorksheetFunction.Max(rng), LookIn:=xlValues).Column)
If valg = 2 Then kol = Cells(rng.Find(WorksheetFunction.Max(rng), LookIn:=xlValues).Row, "DA")
End Function

=kol(DB2:DE157;1)  - returnerer værdi i række 1 i kolonne med største tal

=kol(DB2:DE157;2)  - returnerer værdi i kolonne DA fra række med største tal
Avatar billede david_swahn Nybegynder
11. november 2008 - 00:39 #13
Det er lige hvad jeg havde brug for! Eminent, stor smiley og håndtegn her fra!

Takker, bugger,
Lukker og Slukker

- David
Avatar billede excelent Ekspert
11. november 2008 - 15:57 #14
Så mangler du bare at markere box med mit navn og klikke accepter
Avatar billede excelent Ekspert
18. november 2008 - 17:09 #15
?
Avatar billede david_swahn Nybegynder
26. april 2010 - 14:23 #16
Oops og undskyld! bedre sent end aldrig.
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