Avatar billede mrkr Juniormester
27. maj 2008 - 22:58 Der er 6 kommentarer og
1 løsning

formel der søger efter bestemt tekst

Hvordan laver man lige en formel der skriver "1" hvis der står
"gruppe/hold"
eller
"timer" i en celle a1

Jeg har 500 linier med ca. samme indhold i kolonne A, så jeg skal bruge den til at teste mange linier.


de anførte tekster er næsten altid kun en del af indholdet i celle a?

Nogle gange står de med små bogstaver, andre gange med store og endelig nogle gange med blandede bogstaver

Jeg har overvejet om der skal noget kode til, men det villle jo være nemmere med en formel.
Avatar billede jkrons Professor
27. maj 2008 - 23:54 #1
Hvis du har dine tekster i A-kolonnn vil denenc formel i B-kolonnen - kopieret ned:

=HVIS(ELLER(IKKE(ER.FEJL(FIND("timer";A1;1)));IKKE(ER.FEJL(FIND("gruppe/hold";A1;1))))=SAND;1;"")

Skrive 1 ud for de celler i A, hvor der enten står "timer" eller "gruppe/hold", og ingenting ud for de celler, hvor ingen af delene står.
Avatar billede supertekst Ekspert
27. maj 2008 - 23:55 #2
En HVIS-function kunne nok gøre det - men der skal gøres noget ved teksterne.
En makro vil nok være mere enkelt.
Avatar billede jkrons Professor
28. maj 2008 - 00:04 #3
Og så havde jeg lige overset at bogstaverne kunne være både store og små.

Prøv denne i stedet:

=HVIS(ELLER(IKKE(ER.FEJL(FIND(STORE.BOGSTAVER("timer");STORE.BOGSTAVER(A1);1)));IKKE(ER.FEJL(FIND(STORE.BOGSTAVER("gruppe/hold");STORE.BOGSTAVER(A1);1))));1;"")

eller på engelsk

=IF(OR(NOT(ISERROR(FIND(UPPER("timer"),UPPER(A1),1))),NOT(ISERROR(FIND(UPPER("gruppe/hold"),UPPER(A1),1)))),1,"")
Avatar billede mrkr Juniormester
28. maj 2008 - 10:11 #4
jamen, den løste problemet lige som den skulle.
Jeg kendte ikke til den finte med STORE.BOGSTAVER

Jeg vælger den danske.
Tak for hjælpen

Har du et svar?

Jeg har selv rodet med et forsøg på en kode, som ikke virkede.
Det kunne være sjovt, hvis jeg lige kunne få at vide hvad jeg gør galt:


Sub test()
With ThisWorkbook.Worksheets("ark1")
For T = 1 To 500
If Cells(T, "A") = "timer" Then Cells(T, "B") = "1"
If Cells(T, "A") = "gruppe/hold" Then Cells(T, "B") = "1"
Next
End With
End Sub
Avatar billede jkrons Professor
28. maj 2008 - 11:52 #5
Her er et svar.

Din kode virker hos mig, bortset fra at den kund finder de steder, hvor teksten er det eneste, der står i cellen. Og ikke skelner mellem store og små bogstaver.

Dette ville løse det sidst problem:

Sub test()
With ThisWorkbook.Worksheets("ark1")
For tn = 1 To 500
If UCase(Cells(tn, "A")) = UCase("timer") Then Cells(tn, "B") = "1"
If UCase(Cells(tn, "A")) = UCase("gruppe/hold") Then Cells(tn, "B") = "1"
Next
End With
End Sub

Men en nemmere løsning, der klarer begge problemer kunne fx være;

Sub t()
    For Each c In Range("a1:A5").Cells
        a = InStr(1, UCase(c.Value), "TIMER")
        b = InStr(1, UCase(c.Value), "GRUPPE/HOLD")
        If a <> 0 Or b <> 0 Then
        c.Offset(0, 1) = 1
    End If
Next c
End Sub
Avatar billede jkrons Professor
28. maj 2008 - 11:53 #6
Og det skulle så have været et svar.
Avatar billede mrkr Juniormester
28. maj 2008 - 13:16 #7
mange tak.
ja, selvom jeg havde en stump kode, var der nu alligevel langt til jeg var kommet i mål.
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