Gå til innhold

Excel: Kjede sammen og Indirekte


HKRoed

Anbefalte innlegg

Hei!

Har ett Excelark med oversikt over anbud, Anbud.xls.

Alle anbud er også en egen fil, feks 1156.xls. Alle filer ligger i samme mappe

 

I kolonne A står navnet på anbudet, feks 1156. Jeg prøver å få hentet inn innholdet fra B3 i 1156.xls til kolonne B i Anbud.xls.

Har testet med Kjede sammen-funksjonen, men da viser den bare formelen. Har også funnet ut at jeg må bruke Indirekte-funksjonen, men den får jeg ikke til å fungere.

Står bare #REF i cellen...

 

Prøver denne formelen: =INDIREKTE(KJEDE.SAMMEN(L143;M143;A143;K2;N143;O143))

som gir denne adressen: =[1156.xls]Ark1!$D$3

Noe som egentlig er riktig. Men jeg ønsker å fylle hele kolonne B med denne formelen, og da forandres ikke filnavnet.

 

Kan noen hjelpe meg? :-)

Endret av SpritHansi
Lenke til kommentar
Videoannonse
Annonse

Hei

 

Som du har oppdaget virker ikke INDIREKTE mot lukkede arbeidsbøker. En formel som denne

=[1156.xls]Ark1!$D$3

vil endre seg til noe a la dette

='C:\Temp\[1156.xls]Ark1'!$D$3

idet du lukker kildefilen.

 

Det er meg bekjent ingen formelløsning på dette, du må i gang med en eller annen form for VBA-koding, eventuelt strukturere dataene dine annerledes. Her er en løsning

http://spreadsheetpage.com/index.php/tip/a_vba_function_to_get_a_value_from_a_closed_file/

men googler du get data from closed workbook finner du mange alternative måter å gjøre det på.

 

Beste hilsen Harald

Lenke til kommentar

Hei på deg.

Utfordringen din er at formelen ikke endrer navn når du kopierer den nedover i B-kolonnen.

I dette eksemplet har jeg skrevet en liten snutt som bytter ut filnavnet i formelen ut fra anbudsnummeret i A-kolonnen

Du kopierer først formelen helt ned, og så kjører du makroen.

 

Eksemplet finner du her

http://www.excelguru.no/download/1450/

 

(Hvis du har de tre filene 1156.xlsx, 1157.xlsx og 1158.xlsx på samme område, funker eksemplet fint)

 

Makroen ser slik ut:

Sub Knapp1_Klikk()
 Dim Anbud As String
 Dim Formel As String
 Dim x As Integer
 Dim a As Integer
 Dim b As Integer
 Dim FilType As String
 Dim AnbudsNummer_Kolonne As Integer
 Dim Formel_Kolonne As Integer
 
 'Disse tre parametrene må du muligens endre...
 FilType = ".xlsx"
 AnbudsNummer_Kolonne = 1
 Formel_Kolonne = 2
 
 x = 1: While Cells(x, AnbudsNummer_Kolonne) <> ""
  Anbud = Cells(x, AnbudsNummer_Kolonne)
  Formel = Cells(x, Formel_Kolonne).Formula
  
  
  a = InStr(1, Formel, "[")
  b = InStr(1, Formel, "]")
  
  If a <> 0 And b <> 0 Then
     Formel = Left(Formel, a) & Anbud & FilType & Mid(Formel, b)
     Cells(x, Formel_Kolonne).Formula = Formel
  End If
 x = x + 1: Wend
End Sub
Lenke til kommentar

Ser ut som denne fungerer helt genialt :-)

Men jeg ønsker å hente ut data fra 3 stk celler.

Tipper det er denne linja jeg må endre til noe??

Formel_Kolonne = 2

 

Så fint at det virker. Ja, det er Formel_Kolonne som bestemmer hvilken kolonne formelen som skal endres ligger i. Er dette en engangsjobb funker vel det greit, ellers kan jeg mekke litt til så den endrer på tre kolonner i en smekk :)

 

Formel_Kolonne=2 er B-kolonnen, Formel_Kolonne=3 er C-kolonnen osv

 

Vennlig hilsen Ketil

Endret av ExcelGuru
Lenke til kommentar

 

x = 1: While Cells(x, AnbudsNummer_Kolonne) <> ""

  Anbud = Sheets(1).Cells(x, AnbudsNummer_Kolonne)
  Formel = Cells(x, Formel_Kolonne).Formula
 
Sitter på en Mac her og får ikke testet, men er rimelig sikker på at den skal ordne biffen. 

 

Beklager, det gikk ikke. Da fant den ikke anbudsnummeret i A-kolonna, så alle celler ble #REF

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...