Сортировка значений в столбце в строки, разделенные различными значениями, путем сопоставления - PullRequest
0 голосов
/ 28 января 2020

У меня есть набор данных, в котором каждая ячейка содержит имя и веб-сайт, имена, конечно, имеют переменную длину, но первые двенадцать букв всегда должны быть разными, а дочерние сайты всегда разными. Мне нужно хранить эту информацию в той же ячейке, но есть сотни дочерних сайтов. По сути, мне нужно один раз отправить электронное письмо обо всех принадлежащих им сайтах, и я должен иметь возможность скопировать информацию о сайте, поэтому я хочу, чтобы имя каждого человека вместе с сайтом начиналось в отдельном столбце. Каждая ячейка является уникальным сайтом, но также содержит имя владельца, некоторые из которых совпадают (как показано ниже, предположим, что каждая строка - это новая строка, а все строки в столбце 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...