У меня есть набор данных, в котором каждая ячейка содержит имя и веб-сайт, имена, конечно, имеют переменную длину, но первые двенадцать букв всегда должны быть разными, а дочерние сайты всегда разными. Мне нужно хранить эту информацию в той же ячейке, но есть сотни дочерних сайтов. По сути, мне нужно один раз отправить электронное письмо обо всех принадлежащих им сайтах, и я должен иметь возможность скопировать информацию о сайте, поэтому я хочу, чтобы имя каждого человека вместе с сайтом начиналось в отдельном столбце. Каждая ячейка является уникальным сайтом, но также содержит имя владельца, некоторые из которых совпадают (как показано ниже, предположим, что каждая строка - это новая строка, а все строки в столбце A).
FirstName1 MiddleName(Opt)1 LastName1 https://website1.domain/subsite1
FirstName1 MiddleName(Opt)1 LastName1 https://website1.domain/subsite2
FirstName1 MiddleName(Opt)1 LastName1 https://website1.domain/subsite3
FirstName2 MiddleName(Opt)2 LastName2 https://website1.domain/subsite4
FirstName2 MiddleName(Opt)2 LastName2 https://website1.domain/subsite5
FirstName3 MiddleName(Opt)3 LastName3 https://website1.domain/subsite6
FirstName4 MiddleName(Opt)4 LastName4 https://website1.domain/subsite7
I Я начал писать VBA, чтобы пробежаться и сделать это для меня, но я зашел в тупик. Я написал, что я думаю о каждой строке / шаге, но мне нужна помощь, чтобы получить их там. Любая помощь или указатели в правильном направлении будет высоко ценится! Если вам нужна дополнительная информация, пожалуйста, спросите. Вот что я придумала:
Sub SortingTest()
Dim x As Integer
Application.ScreenUpdating = False
NumRows = Range("A1", Range("A1").End(xlDown)).Rows.Count
Range("A1").Select
'GCV = Get Cell Value
Dim GCV As String
'NW = Name and Website
Dim NW As String
'CL = Cell Location
Dim CL As Range
'NC = New Column
Dim NC As Long
Dim xCell As Range
NC = 1
For x = 1 To NumRows
'get data for comparison
GCV = Left(ActiveCell, 12)
'get data for pasting
NW = ActiveCell.Value
'save location of ActiveCell as CL
Set CL = ActiveCell
'go back to CL and then offset (1,0)
'go to the row over, IF value in NC row 1 match value of GCV, set the next blank cell to NW
ActiveCell.Offset(0, 1).Select
If Row(1).Column(NC).Value = GCV Then
On Error Resume Next
For Each xCell In ActiveSheet.Columns(1).Cells
If Len(xCell) = 0 Then
xCell.Select
Exit For
End If
Next
'IF no match, go to next row and reiterate and NC = NC + 1 Column(NC).Select
'ElseIf Row(1).Column(NC).Value <> GCV AND <> blank then Next
'IF NC row 1 is BLANK, set it to NW.
'ElseIf Row(1).Column(NC).Value = blank Then Row(1).Column(NC).Select and ActiveCell.Value = NW
ActiveCell.Value = NW
Next
Application.ScreenUpdating = True
End Sub