25. november 2003 - 11:05
Der er
24 kommentarer og 1 løsning
Slå værdi op i regneark
Jeg har en celle, som hedder 1000 eksempelvis. Denne værdi angiver navnet på det regneark jeg ønsker den skal slå op i. Hvordan laver jeg en formel, som slår en bestemt celle (G19) op i dette ark? Placering regneark: f:\kalk\
Annonceindlæg fra Infor
25. november 2003 - 11:23
#1
Hvis det regneark, der skal slåes op i ikke er åbnet på forhånd, kan du ikke gøre det med en formel. Så er du nødt til at bruge en makro.
25. november 2003 - 11:26
#2
okay... hvordan ser den så ud?
25. november 2003 - 11:46
#3
Sub test() path = "F:\Kalk\" file = Range("a2").Text & ".xls" 'cellen der indeholder filnavnet sheet = "Ark1" rng = "$G$19" End Sub Private Function GetValue(path, file, sheet, range_ref) Dim arg As String arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(range_ref).Range("A1").Address(, , xlR1C1) GetValue = ExecuteExcel4Macro(arg) End Function
25. november 2003 - 13:07
#4
Hmm... den kokser.. Den skal smide den værdi den finder ind i celle B2. Værdien der er filnavnet, står i celle A2.
25. november 2003 - 14:01
#5
er er gledet en linie ud :-) Sub test() path = "F:\Kalk\" file = Range("a2").Text & ".xls" 'cellen der indeholder filnavnet sheet = "Ark1" rng = "$G$19" Range("B2").value=GetValue(Path, File, Sheet, rng) End Sub Private Function GetValue(path, file, sheet, range_ref) Dim arg As String arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(range_ref).Range("A1").Address(, , xlR1C1) GetValue = ExecuteExcel4Macro(arg) End Function
25. november 2003 - 14:21
#6
Er lidt i tvivl om, hvordan jeg skal behandle: 'cellen der indeholder filnavnet Skal jeg bare direkte erstatte det med A2 eksempelvis?
25. november 2003 - 15:22
#7
Nej, du skriver bare filnavnet på den fil du vil hente data fra i celle A2 feks. 1000 og så kører du makroen. Den indsætter så værdien fra 1000.xls ark1 celle G19 i det aktive arks celle B2
25. november 2003 - 15:38
#8
Den melder fejl. "Der opstod en kompileringsfejl: Der kan ikke tildeles en skrivebeskyttet egenskab. Sub test() path = "F:\Kalk\" file = Range("a2").Text & ".xls" A2 sheet = "Ark1" rng = "$G$19" Range("B2").Value = GetValue(path, file, sheet, rng) End Sub Private Function GetValue(path, file, sheet, range_ref) Dim arg As String arg = "'" & path & "[" & file & "]" & sheet & "'!" & Range(range_ref).Range("A1").Address(, , xlR1C1) GetValue = ExecuteExcel4Macro(arg) End Function
25. november 2003 - 16:10
#9
fjern lige det sidste A2 i denne linie file = Range("a2").Text & ".xls" A2
27. november 2003 - 10:20
#10
Den melder fejl. "Der opstod en kompileringsfejl: Der kan ikke tildeles en skrivebeskyttet egenskab. og så er path = markeret
27. november 2003 - 10:25
#11
Det forstår jeg ikke lige. Hvilken version af excel bruger du ? prøv at ændre alle de steder der står path til p, i det tilfælde at det skulle være fordi path er en indbygget ting der ikke må ændres. Det virker fint ved mig på xl2000
27. november 2003 - 10:27
#12
ok.. jeg bruger 97. Prøver lige at ændre.
27. november 2003 - 10:31
#13
Det hjalp.. nu kom jeg lidt videre. Den kan ikke filen, hvor filnavnet står i A2. Leder i mappen.. mit navn, under documents and settings. Filnavnet står som: Dokumenter[8886.xls]Ark1
27. november 2003 - 10:45
#14
står der bare 8886 i a2 ?
27. november 2003 - 11:33
#15
Ja...
27. november 2003 - 11:59
#16
har du mulighed for at sende arket til tommybak@netscape.net
27. november 2003 - 13:59
#17
Sendt...
27. november 2003 - 14:22
#18
Du havde ikke ændret sheet til det rigtige ark (stod til Ark1, men men arket hedder bare A) og du manglede at ændre en path til p Sub test() p = "F:\KALK\" file = Range("a2").Text & ".xls" sheet = "A" rng = "$G$19" Range("B2").Value = GetValue(p, file, sheet, rng) End Sub Private Function GetValue(p, file, sheet, range_ref) Dim arg As String arg = "'" & p & "[" & file & "]" & sheet & "'!" & Range(range_ref).Range("A1").Address(, , xlR1C1) GetValue = ExecuteExcel4Macro(arg) End Function
27. november 2003 - 14:25
#19
Tak... så virker det!
27. november 2003 - 14:31
#20
Hvor meget skal ændres i makroen, før den kan tage flere ting og smide over. Eksempelvis skal I19 (8886) til C2 (mappe3) og H31 til D2 ?
27. november 2003 - 21:59
#21
Sådan. Du fylder bare celler på i variablen Cells2Get Sub test() Dim Cells2Get() Dim szPath As String Dim szFile As String Dim szSheet As String '***** B R U G E R UD F Y L D T ********************************* szPath = "F:\KALK\" 'Sti szFile = Range("A2").Text & ".xls" 'Filnavn szSheet = "A" 'Arknavn Cells2Get = Array("G19", "I19", "H31") 'Celler, der skal hentes '**************************************************************** For j = 0 To UBound(Cells2Get) ActiveCell.Offset(0, j + 1) = GetValue(szPath, szFile, szSheet, Cells2Get(j)) Next
27. november 2003 - 22:00
#22
Du skal selvfølgelig beholde funktionen Private Function GetValue(p, file, sheet, range_ref) Dim arg As String arg = "'" & p & "[" & file & "]" & sheet & "'!" & Range(range_ref).Range("A1").Address(, , xlR1C1) GetValue = ExecuteExcel4Macro(arg) End Function
28. november 2003 - 11:28
#23
Melder fejl i denne linie: arg = "'" & p & "[" & file & "]" & sheet & "'!" & Range(range_ref).Range("A1").Address(, , xlR1C1)
28. november 2003 - 16:03
#24
zack-> den skal virker, har du ændret arknavn eller andet ?
25. juli 2005 - 11:35
#25
luk
Vi har et stort udvalg af Excel kurser. Find lige det kursus der passer dig lige her.