Avatar billede saxtus Nybegynder
10. august 2004 - 13:50 Der er 13 kommentarer

Kan man lave en referance tabel i excel??

Jeg sidder og undre mig over om man kan lave en referance tabel, så jeg kan finde hente en referance i en anden celle

jeg skal hunne udtrække et bokstav fra en celle, lægge noget til den, og så få referancen til den celle jeg skal bruge.

Altså noget i den her stil

"D(fra A1)"+32 = referancen til celle D32.

håber at i kan forstå hvad jeg mener, ellers spørg
Avatar billede kabbak Professor
10. august 2004 - 14:21 #1
=INDIREKTE((B2&B3);1)

i B2 er intastet et D
i B3 er intastet 45

ovenstående finder væreien i celle D45
Avatar billede saxtus Nybegynder
11. august 2004 - 10:48 #2
Det virker i samme dok, men hvad gør man så når man skal hente noget fra en anden fil??
Avatar billede jkrons Professor
11. august 2004 - 11:01 #3
Hvis du skal hente noget fra en anden fil, skal denne være åben. Ellers kan du ikke anvende dynamiske referencer. Dette skyldes at INDIREKTE kun virker på åbne filer.

I modsat fald må du lave en makro, som henter informationen ud af den rigtige celle i det rigtige regneark,.
Avatar billede saxtus Nybegynder
11. august 2004 - 11:08 #4
hvordan gør jeg så det??
Avatar billede jkrons Professor
11. august 2004 - 11:16 #5
Nedenstående makro, forudsætter, at regnearket, du skal hente fra, hedder mybook.xls og ligger i roden på c:. Dette kan også gøres dynamisk.

I det ark, hvor du skal bruge info, taster du kolonne i B2 og Række i B3.

Derefter hentes værdien fra den påglældende celle i det lukkede ark, og denne indsættesi C1 i det aktive ark. Systemet kan nok gøres mere dynamisk, hvis du ønsker det.

Sub HentFraArk()
    Dim xlApp As Object
    Dim CelVar
    Dim NewVar
   
    CelVar = Range("B2").Value & Range("B3").Value

    Set xlApp = CreateObject("Excel.application")
    xlApp.Workbooks.Open Filename:="h:\mybook.xls"
    NewVar = xlApp.Sheets(1).Range(CelVar).Value
    xlApp.ActiveWorkbook.Close
    Set xlApp = Nothing
   
  ActiveSheet.Range("C1").Value = NewVar

End Sub
Avatar billede jkrons Professor
11. august 2004 - 11:18 #6
En bedre løsning er

Function HentFraArk()
    Dim xlApp As Object
    Dim CelVar
    Dim NewVar
   
    CelVar = Range("B2").Value & Range("B3").Value

    Set xlApp = CreateObject("Excel.application")
    xlApp.Workbooks.Open Filename:="h:\mybook.xls"
    NewVar = xlApp.Sheets(1).Range(CelVar).Value
    xlApp.ActiveWorkbook.Close
    Set xlApp = Nothing
   
  HentFraArk = NewVar

End Function

Så kan du indsætte formlen =hentfraark(), der hvor du vil have resultatet til at stå.
Avatar billede saxtus Nybegynder
11. august 2004 - 11:24 #7
Det ser meget fint ud, men jeg kan ikke bruge det.

Jeg har 8-10 stedder i mit regneark formler der minder afsindigt meget om hinanden, hvor det bare er det sidste tal i referancen er der ændret.

=$C$14*'C:\Huskalkulation\Styreprogrammer\[Roust-de.xls]Opsamling ydervæg'!D12
+$D$14*'C:\Huskalkulation\Styreprogrammer\[Roust-de.xls]Opsamling ydervæg'!E12
+$E$14*'C:\Huskalkulation\Styreprogrammer\[Roust-de.xls]Opsamling ydervæg'!F12
+$F$14*'C:\Huskalkulation\Styreprogrammer\[Roust-de.xls]Opsamling ydervæg'!G12
osv

i linien neden under står så nøjagtigt det samme bare med .... ydervæg'!D13 mm

Da jeg så blev anbefalet "INDIREKTE" synte jeg at det så genialt ud og lige var det jeg skulle bruge. Men det virkede jo detsværre ikke :(

Jeg må se om jeg ikke kan finde på et eller andet genialt i stedet så
Avatar billede jkrons Professor
11. august 2004 - 11:27 #8
Jeg tror ikke at jeg kan gennemskue andre løsninger end den "hårde", altså indtastning af de forskellige referencer manuelt (evty kopiering og manuel rettelse af sidste led).
Avatar billede saxtus Nybegynder
11. august 2004 - 11:36 #9
okay prøver alligevel - kan man så ikke sende et tal med i funktionen, altså noget i den stil =hentfraark(18)

Function HentFraArk(ind)
    Dim xlApp As Object
    Dim CelVar
    Dim NewVar
   
    CelVar = Range("B2").Value & ind
    Range("B3").Value '''''?????''''''

    Set xlApp = CreateObject("Excel.application")
    xlApp.Workbooks.Open Filename:="C:\Huskalkulation\styreprogrammer\Roust-de.xls"
'''''''''' her skal jeg så vælge det rigtige ark (Opsamling ydervæg) '''''''''''''
    NewVar = xlApp.Sheets(1).Range(CelVar).Value
    xlApp.ActiveWorkbook.Close
    Set xlApp = Nothing
   
  HentFraArk = NewVar

End Function

Har lige markeret et par steder, der ved jeg ikke lige hvordan og hvorledes, håber at du også kan hjælpe der
Avatar billede saxtus Nybegynder
11. august 2004 - 12:00 #10
nå nu har jeg fået det til at virke, men der er bare et lille proble - den opdatere kun når jeg sener værdien. Den skulle auto-opdatere når jeg ændre i en af variablerne som den bruger
Avatar billede kabbak Professor
16. august 2004 - 21:41 #11
Info fra Excel hjælp:

Volatile Method
               
Marks a user-defined function as volatile. A volatile function must be recalculated whenever calculation occurs in any cells on the worksheet. A nonvolatile function is recalculated only when the input variables change. This method has no effect if it's not inside a user-defined function used to calculate a worksheet cell.

Så denne skulle virke, med hensyn til opdatering

Function HentFraArk(ind)
    Dim xlApp As Object
    Dim CelVar
    Dim NewVar
  Application.Volatile
    CelVar = Range("B2").Value & ind
    Range("B3").Value '''''?????''''''

    Set xlApp = CreateObject("Excel.application")
    xlApp.Workbooks.Open Filename:="C:\Huskalkulation\styreprogrammer\Roust-de.xls"
'''''''''' her skal jeg så vælge det rigtige ark (Opsamling ydervæg) '''''''''''''
    NewVar = xlApp.Sheets(1).Range(CelVar).Value
    xlApp.ActiveWorkbook.Close
    Set xlApp = Nothing
   
  HentFraArk = NewVar

End Function
Avatar billede bak Forsker
16. august 2004 - 23:45 #12
Jeg håber ikke det regneark der skal hentes er ret stort, for som kabbak skriver vil application.volatile gøre at enhver nok så lille beregning af dit ark vil tvinge excel til at åbne en ny version af excel og hente regneark ind og hente data fra arket. Dette vil den gøre 1 gang for hver funktion HentFraArk, som du har sat ind.
Dvs. at hvis du har sat funktionen ind 10 steder, skal der ved en tilfældig ændring, som ikke engang omfatter de celler funktionen står i åbnes og lukkes 10 excel applicationer.

Et forslag som relaterer sig til kabbak's 1. svar med Indirekte, ville være at indsætte en auto_open makro der henter pågældende regneark ind skrivebeskyttet og skjult for brugeren når dit regneark åbnes. (og en auto_close der lukker den ned sammen med)
På denne måde kan du bruge Indirekte alle steder. Da den er åbnet skrivebeskyttet vil andre kunne bruge samme regneark samtidig.

For at gøre dette indsætter du bare disse to makroer i modulet ThisWorkBook
Private Sub Workbook_Open()
    Application.ScreenUpdating = False
    Workbooks.Open "C:\Huskalkulation\styreprogrammer\Roust-de.xls", False, True
    ActiveWindow.Visible = False
    Application.ScreenUpdating = True
End Sub

Private Sub Workbook_BeforeClose(Cancel As Boolean)
    Workbooks("Roust-de.xls").Close savechanges:=False
End Sub
Avatar billede saxtus Nybegynder
16. januar 2009 - 13:42 #13
Den der vil, skyd et svar, og få en masse point
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
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

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