01. december 2004 - 13:44Der er
32 kommentarer og 1 løsning
en formel, som søger efter et navn, fra en celle, i flere ark.
Det drejer sig om følgende problemstilling.
Jeg har et regneark med flere ark ca. 60 stk.
Problemet er at jeg vil lave et ark for sig selv, hvori nogle bestemte værdier fra de resterende ark samles op.
Jeg har forsøgt med en kombineret HVIS og SLÅOP funktion, men jeg kan ikke få den til at søge i et bestemt ark, med et navn som jeg skriver i en celle på det ekstra ark.
denne makro lavede jeg engang, den er måske overdrevet, men søge i ark kan den. Lav et ark der hedder forside.
den skal i et modul
så kan i selv lege videre med den.
Sub FindOrd() Dim Fundet(300, 5) As String, Sted(300) As String, Søg As Variant, I As Integer, T As Integer Dim R As Integer, Side(300) As String I = 1 On Error Resume Next Range("D1").Select Sheets("Forside").AutoFilterMode = False Sheets("Forside").Select Range("B2:I301").Select ' sletter alle data i området til hyperlink Selection.ClearContents Range("a2").Select Søg = InputBox("Skriv søgestrengen på hvad der skal Findes", "Find tekst eller værdi") Application.ScreenUpdating = False For Each ws In Worksheets If ws.Name <> "Forside" Then ' skift selv navnet på forsiden Sheets(ws.Name).Select Range("A1:H500").Select 'området den søger på ret det selv til Selection.Find(What:=Søg, After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _ MatchCase:=False).Activate If Err.Number = 91 Then Err.Clear GoTo Videre End If a = ActiveCell.Row If a = 1 Then GoTo Videre b = ActiveCell.Column Cells(a, b).Activate Side(I) = ws.Name Sted(I) = "'" & ws.Name & "'!" & ActiveCell.Address For T = 1 To 5 Fundet(I, T) = Sheets(ws.Name).Cells(a, T).Value Next If I > 1 Then For T = 1 To I - 1 If Sted(I) = Sted(T) Then GoTo Videre End If Next End If I = I + 1 Do Cells.FindNext(After:=ActiveCell).Activate If Err.Number = 91 Then Err.Clear GoTo Videre End If a = ActiveCell.Row If a = 1 Then GoTo Videre b = ActiveCell.Column Cells(a, b).Activate Side(I) = ws.Name Sted(I) = "'" & ws.Name & "'!" & ActiveCell.Address For T = 1 To 5 Fundet(I, T) = Sheets(ws.Name).Cells(a, T).Value Next If I > 1 Then For T = 1 To I - 1 If Sted(I) = Sted(T) Then GoTo Videre End If Next End If
I = I + 1 Loop End If Videre: Next Slut: Sheets("Forside").Select Application.ScreenUpdating = True For T = 1 To I - 1 Worksheets("forside").Range("B2:F101").Cells(T, 1).Select For R = 1 To 5 ActiveCell.Offset(0, R) = Fundet(T, R) Next ActiveCell.Select ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:="", SubAddress:=Sted(T) ActiveCell.FormulaR1C1 = Side(T) ' skriver hyperlink på alle fundne steder Next Range("D7").Select Selection.Sort Key1:=Range("C2"), Order1:=xlAscending, Key2:=Range("D2") _ , Order2:=xlAscending, Header:=xlGuess, OrderCustom:=1, MatchCase:= _ False, Orientation:=xlTopToBottom Range("C2").Select If I = 1 Then MsgBox " ingen fundet" End If Range("D1").Select Selection.AutoFilter End Sub
Det lyder lidt voldsomt, kan den finde et ark ud fra et navn som står i en celle, istedet for at skrive 'ARK'! kan den så finde et ark udfra f.eks værdien i celle A100 ?
dvs. at hvis jeg nu skriver K001 i felt A65 og i A66 skriver en formel som skal finde et ark med navnet K001 og i det ark tage værdien i et bestemt felt og oplyse det i felt A66. Det kan lade sig gøre med ovenstående makro. det er ikke en eller anden funktion i excel jeg kan benytte ?
Nu skal jeg se om jeg kan forklar det lidt bedre. Min ide er følgende: =HVIS($A6="";"";SLÅ.OP($A6;'K001'!$A$100;'K001'!B$100))
I A6 står der K001, så er problemet at jeg gerne vil have at jeg kun skal skrive K001 i felt A6, og så skal formlen selv finde ud af at det er 'KOO1' arket som den skal søge i felt A100 og give værdien i B100.
Hvis jeg prøver at henvise til 'A6'! istedet for 'K001'! søger den efter et filnavn istedet for et ark.
Okay, så skal der uddeles point, jeg må sige at tobler skal have nogle for det var ham der kom med idén om at bruge indirekte(), så skal kabbak også have nogle for han fik den til at virke helt efter planen. Men hvad er nu rimeligt hvordan skal de fordeles. Hvad siger I TOBLER og KABBAK ?
--> kabbak, var smuttet på weekend da pointdelingen blev foreslået, men har leget videre, så tror du jeg kan skore noget på denne:
=INDIRECT(ADDRESS(100;CELL("col";B1);;;"" & $A6 & "")) på dansk: =INDIREKT(ADRESSE(100;CELLE("col";B1);;;"" & $A6 & "")) er lidt i tvivl om "col" skal oversættes.
den kopieres i celle B3, derefter skulle den kunne kopieres til C3 og hente værdien fra C100 i arket som der refereres til i A6. Dette skulle løse indlæg fra cvl :03/12-2004 15:20:01
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.