Есть ли способ исключить части данных, которые находятся в одной ячейке? - PullRequest
0 голосов
/ 24 июня 2019

В настоящее время я пытаюсь написать код, который будет принимать столбец ячеек и очищать его, исключая определенные имена в столбце, сложность заключается в том, что имена, которые я хочу исключить, каждый раз находятся в разных местах.

Я пытался найти способ сделать это с помощью функции замены, но я не могу найти хороший способ избавиться от нескольких имен одновременно, и я смотрел в серединуфункционировать немного, но из-за меняющейся позиции я не мог найти способ использовать это.

Например, если было три ячейки 1. "Мэтт, Даниэль, Райан" 2. "Райан, Мэтт"3. «Даниил»

и я хочу вырезать из данных «матовый» и «райанский».

1 Ответ

0 голосов
/ 24 июня 2019

Смотрите комментарии для более подробной информации, надеюсь, это поможет:

Sub clearNames()

Dim ws As Worksheet: Set ws = ActiveWorkbook.Sheets("Sheet1") 'declare and allocate your sheet to a variable

Dim lRow As Long: lRow = ws.Cells(Rows.Count, 1).End(xlUp).Row 'get the last row at column 1 ("A")

Dim arrData As Variant: arrData = ws.Range("A1:A" & lRow) 'declare and populate an array with the data

Dim arrExcl() As String: arrExcl = Split("matt,ryan", ",") 'declare and populate an array with strings to exclude


Dim R As Long, X As Long
For R = LBound(arrData) + 1 To UBound(arrData) 'for each row in data array
    For X = LBound(arrExcl) To UBound(arrExcl) 'for each row in the exclusion array
        If InStr(arrData(R, 1), arrExcl(X)) > 0 Then 'if the string is found
            arrData(R, 1) = Replace(arrData(R, 1), arrExcl(X), "") 'replace it with nothing
        End If
    Next X
Next R

ws.Range("B1:B" & lRow) = arrData 'put the data back on the sheet

End Sub

Это может быть не совсем то, что вы хотите, но должно дать вам отправную точку.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...