У меня есть список (разделенных точкой с запятой) генов в столбце BI, который я хочу создать из этого списка , список генов, найденных в столбце A.
| Keep | List | | Result |
|------------------|----------------------------|---|-------------|
| AASS;SESN1;SEPT5 | AASS | | AASS |
| | ARMC2;SESN1;ARMC2AS1;SEPT5 | | SESN1;SEPT5 |
| | | | |
У меня есть начало кода, но он работает только для некоторых списков генов, но не для всех.
Например, списки в ячейках B2 и B3 правильно извлекаются в столбец C,но ячейка B4 заканчивается 7 дополнительными терминами (но выполнение сценария VBA во второй раз приводит к правильному числу и составу), а B5 приводит к странному выводу "4; 5; 0; 2; 3; 1; SNORD1161" вD5.
Это код, который у меня есть, и он был изменен с: https://www.mrexcel.com/forum/excel-questions/654920-match-comma-delimited-values-cell-against-individual-values-column.html
Любая помощь будет принята с благодарностью!Спасибо!
Sub matchups2()
Dim regex_leading As New VBScript_RegExp_55.RegExp
Dim regex_middle As New VBScript_RegExp_55.RegExp
Dim regex_trailing As New VBScript_RegExp_55.RegExp
Set d = CreateObject("scripting.dictionary")
For Each gene In Range("A2", Cells(Rows.Count, "A").End(3)).Value
d(gene) = 1
Next gene
Stop
For Each genelist In Range("B2", Cells(Rows.Count, "B").End(3))
c = genelist.Value
k = genelist.Row
For Each q In Split(c, ";")
If d(q) <> 1 Then
c = Replace(c, q, ";")
End If
Next q
regex_leading.Pattern = "^;{1,}"
With regex_middle
.Pattern = ";{1,}"
.Global = True
End With
regex_trailing.Pattern = ";{1,}$"
c = regex_leading.Replace(c, "")
c = regex_middle.Replace(c, ";")
c = regex_trailing.Replace(c, "")
Cells(k, "D").Value = c
Next genelist
End Sub