Avatar billede lortepc Nybegynder
12. november 2009 - 19:44 Der er 5 kommentarer og
1 løsning

Index match osv... problemer

Hej Eksperter

Jeg har 2 regnark. I det første står følgende:
A
xxx
yyy
Zzz

I det andet:

A
her står xxx noget
her står osse noget xxx
her står yyy
zzz er i bla bla

Hvordan søger jeg i ark2's vilkårlige tekststreng efter værdierne i ark1?
Jeg vil gerne ha' at værdierne indsættes i kolonne B i ark2 hvis der et match.

På forhånd tak! skal være vba-kode
Avatar billede excelent Ekspert
12. november 2009 - 22:55 #1
Evt. flere match indsættes i kolonne c,d,e....

Sub Test()
Set rng1 = Sheets("Ark1").Range("A1:A30") ' ret område her
Set rng2 = Sheets("Ark2").Range("A1:A30") ' ret område her

For Each c In rng1
If Not IsEmpty(c) Then
stk = 0
For Each d In rng2
If InStr(d, c) > 0 Then
c.Offset(0, 1 + stk) = d
stk = stk + 1
End If
Next
End If
Next
End Sub
Avatar billede lortepc Nybegynder
16. november 2009 - 09:32 #2
Hej Excelent

Hvordan ser rng2 ud når det er i en anden workbook?
Som jeg læser koden så kopierer den del af tekststen fra rng1, som står i rng2. og indsætter den i cellen til højre for.
Det er helt korrekt!
Tak for hjælpen
Avatar billede lortepc Nybegynder
16. november 2009 - 10:12 #3
rng1 indeholder min tekststreng
rng2 indeholder det ord jeg skal søge efter i rng1

Altså hvis teksten står i rng2 så skal det indsættes i kolonnen til højre for tekststrengen i rng1...
Håber jeg har gjort mig forståelig.
Takker!
Avatar billede lortepc Nybegynder
17. november 2009 - 20:40 #4
smid et svar excelent så pointene dine... Jeg får jo nok brug for din hjælp igen :)
Avatar billede lortepc Nybegynder
17. november 2009 - 20:47 #5
Sub FindOrd()
On Error Resume Next
'---------------------------
Dim bok1 As Workbook
Dim bok2 As Workbook
Set bok1 = Workbooks("test1.xls")
Set rng1 = bok1.Sheets(1).Range("A1:A" & bok1.Sheets(1).Cells(65536, 1).End(xlUp).Row)

Set bok2 = Workbooks("Book1.xls")
Set rng2 = bok2.Sheets(1).Range("A1:A" & bok2.Sheets(1).Cells(65536, 1).End(xlUp).Row)
'---------------------------
    Dim varX As String
    Dim FindOrd As String
    Dim varY As String
    FindOrd = ""
        For Each c In rng1 '--------Selection.Cells
            FindOrd = ""
            For Each x In rng2 '--------Workbooks("Book1.xls").Sheets(1).Range("A1:A10").Cells
                varX = InStr(1, c.Value, x.Value)
                If varX <> 0 Then
                    varY = InStr(varX, c.Value, " ")
                    If varY = 0 Then
                        FindOrd = FindOrd & Mid(c.Value, varX, Len(c.Value)) & ", "
                    Else
                        FindOrd = FindOrd & Mid(c.Value, varX, varY - varX) & ", "
                    End If
                End If
            Next x
            c.Offset(0, 1).Value = FindOrd
        Next c
End Sub
Avatar billede excelent Ekspert
17. november 2009 - 21:48 #6
ok. vi kan også dele
Havde heller ikke lige opfattet du mente 2 Projektmapper
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