2016-03-31 15 views
0

komşu değerine dönerse, benzer bir metne sahip çok sayıda hücre alan ve belirli bir biçimde bitişik hücrenin değerlerini döndüren bir komut dosyası veya formül bulmaya çalışıyorum.Sonraki hücre metni, geçerli hücre metniyle eşleşiyorsa ve başka bir hücrede

Örnek

:

B sütununda
A   |   B 
----------------------------- 
123  | Sample String I 
----------------------------- 
456  | Sample String II 
----------------------------- 
789  | Sample String III 
----------------------------- 
987  | Sample String IV 
----------------------------- 
654  | Not String I 
----------------------------- 

, dize "Örnek String" almak (ya da her türlü kelime (ler)) ve A sütununda buna bitişik numaralarını gir, sonra aşağıda sonraki hücreye gitmek B sütununda ve kelimeler aynıysa, A sütunundaki sayıları çıktıya birleştirir.

Ben çizgisinde bir şey düşünüyordum, if B=LIKE(next cell then CONCATENATE ADJACENT Cell(A), Output Cell(C)

bir sorun

[Numune dize, (123, 456, 789, 987)]:

çıkışı gibi bir şey olmalı Yüzlerce tekrarı var, neredeyse ama tam olarak değil, ve birden fazla çalışma kitabım var. Bu yüzden belki de metni karşılaştırmanın bir yolu olduğunu düşündüm ve eğer metin% 70'ten fazla eşleşiyorsa, o zaman bunu yapmak yeni bir giriş veya bir şey yaratır. Aslında hiçbir fikrim yok. Bunu daha iyi yapabilecek başka programlar varsa, ben fikirlere açığım.

+1

[ 'Bulanık LookUp'] (http: // www .excel-university.com/perform-match-match-and-fuzzy-lookup-in-excel /) burada yardımcı olabilir. –

cevap

3

Excel Sadece tanıtılan TEXTJOIN() En son Office 365 güncelleme ve Online uygulamasında:

=TEXTJOIN(",",TRUE,IF(ISNUMBER(SEARCH("Sample String",$B$1:$B$5)),$A$1:$A$5,"")) 

enter image description here

C1 koyun önceki sürümleri için

ve kopyalayın:

=IF(ISNUMBER(SEARCH(LEFT(B2,FIND("}}}",SUBSTITUTE(B2," ","}}}",LEN(B2)-LEN(SUBSTITUTE(B2," ",""))))-1),B1)),A1&"," &C2,A1) 

enter image description here

Bu, her yeni alt dize ilk doğru değeri yapacak. Daha sonra kullanarak gibi bir DÜŞEYARA():

=VLOOKUP("Sample Strin" & "*",$B$1:$C$5,2,FALSE) 

doğru değeri döndürür:

enter image description here

+0

Kullanıcının en son ofis sürümüne sahip olması ve çok sayıda olası eşleşmeye karşı çalışmanın bir yolunu bulmak için mükemmel bir formül. –

+1

@ScottHoltzman Daha önceki sürümler için ekledim. P –

+0

Yaptığım şey bu. En yeni O365 iş başındayım, bu yüzden oldukça iyi bir çözüm. Teşekkürler! – Advancin

0

kullanımlar Instr()

Sub Button1_Click() 
    Dim LstRw As Long, Rng As Range, c As Range, s As String, f As String 

    s = "Sample String" 
    LstRw = Cells(Rows.Count, "B").End(xlUp).Row 
    Set Rng = Range("B1:B" & LstRw) 
    For Each c In Rng.Cells 
     If InStr(c, s) Then 
      f = f & c.Offset(0, -1) & "," 
     End If 
    Next c 
    MsgBox Mid(f, 1, Len(f) - 1) 


End Sub 
İlgili konular