I dette særtema om aspekter af AI ser vi på skiftet fra sprogmodeller til AI-agenter, og hvordan virksomheder kan navigere i spændet mellem teknologisk hastighed og behovet for menneskelig kontrol.
igoogle-> Hvordan vil du finde 1179 med ctrl+f, når tallet ikke står nogen steder i regnearket?
Hvordan vil du finde 1179 med vlookup, når data er placeret i rækker og ikke kolonner? hlookup løser heller ikke problemet, da opslagsværdien er placeret i en kolonne.
Jeg er ikke sikker på at jeg forstår dette. Som jeg læser lopslag så finder den den værdi der er i første kolonne og returnerer værdien fra anden kolonne, eks.
a1 b1
medlem 1 Søren
og returnerer altså Søren
Det jeg onsker er at der søges efter et serienummer der ligger i intervallet der defineres i
a1 b1 første sidste nummer i serien nummer i serien
1001 1010 (her er der altså 10 numre) 1233 1233 ( 1 nummer) 1455 1499 ( x antal numre)
Det jeg ikke kan finde ud af er hvordan man definerer sådanne intervakker og hvordan man søger i dem
Ja der er huller i numrene. Hvordan laves sådan én makro, der læser i intervallet mellen de to første kolonner, finder serienumret, og returnerer datoen der står i 3 kolonne.
1001 1033 11-08-2009
søgning på 1021 skal altså returnere værdien 11-08-2009
Sub FindiInterval() tst = Range("a6").Value For Each c In Range("a1:a10").Cells If tst >= c.Value And tst <= c.Offset(0, 1).Value Then Range("b6").Value = c.Offset(0, 2).Value Exit Sub End If Next c End Sub
Skriv værdien du søger på i A6 og afspil makroen.
Så skriver den datoen i B6. Ret selv den celle, du vil skrive i til noget andet ved at ændre A6. Står første kolonne i dine data et andet sted end A1:A10, skal du også ændre det.
Jeg har prøvet alve det som en funktion, men det driller lidt. Måske vender jeg tilbage senere med en funktionsløsning.
Her er den som funktion. Så kan du bruge den som alle andre funktioner:
Function FInterval(cel As Long, rn As Range, kol As Byte) As Variant tst = cel For Each c In rn.Columns(1).Cells If tst >= c.Value And tst <= c.Offset(0, 1).Value Then FInterval = Format(c.Offset(0, kol - 1).Value, "dd-mm-yy") Exit Function End If Next c FInterval = CVErr(xlErrNA) End Function
Brug den fx som =Finterval(F1;A1:C100;3)
hvor F1 er den celle, hvor du indtaster din søgeværdi. A1:C100 er det område, du har dine værdier i og 3 er den kolonne i matricen, der indeholder datoen, som skal returnes. Findes tallet du søger ikke i matrixens første kolonne, returneres #I/T!
Private Sub CommandButton1_Click() Dim fremstillingsDato As Date If IsNumeric(Me.TextBox1) And Me.TextBox1 <> "" Then
fremstillingsDato = søgInterval(Val(Me.TextBox1)) If fremstillingsDato > 0 Then Me.Label3.Caption = fremstillingsDato Else Me.Label3.Caption = "???" End If End If End Sub Private Function søgInterval(serieNr) Dim ræk As Long With ActiveWorkbook.Sheets("Ark1") For ræk = 1 To 65000 If serieNr >= .Cells(ræk, 1) And serieNr <= .Cells(ræk, 2) Then søgInterval = .Cells(ræk, 6) Exit Function Else If .Cells(ræk, 1) = "" Then søgInterval = 0 Exit For End If End If Next ræk End With End Function
Synes godt om
Ny brugerNybegynder
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.