Страницы: 1
RSS
Разделить набор повторяющихся значения на 2 массива
 
Существует массив данных (2 столбца)..один номер, второй число...часть значений - уникальных, часть повторяющихся (максимально значение встречается 2 раза)...сложность в том, что все значения важны(и не могут быть утеряны)...НЕОБХОДИМО разделить массив на 2 отдельных (в каждом все те же 2 колонки)... в первом все уникальные  и соответствующее этому номеру число из столбца 2 исходного массива...во втором массиве каждое повторно встречающееся значение и число соответствующее этому номеру которое стоит в ячейке 2 исходного массива когда он встречается во второй раз...  
 
исходный файл прилагаю...в нем закладка с тем что в итоге должно получиться (сделано в ручную)
 
А насколько глубоко вы хотите автоматизировать процесс? Встроенными формулами всё можно сделать довольно быстро.
 
хотелось бы как угодно сделать..если можно формулами то подскажите как..
 
Один код незначительно переделываю уже наверное в 20-ый раз...  
Популярная задача.  
 
Option Explicit  
 
Sub DupesCount()  
Dim Arr(), iArr, temp As String, i As Long, ii As Long, iii As Long  
 
Arr = ActiveSheet.Range("A2:B" & ActiveSheet.Range("A" & Rows.Count).End(xlUp).Row).Value  
ReDim a(1 To UBound(Arr), 1 To 2)  
ReDim b(1 To UBound(Arr), 1 To 2)  
 
With CreateObject("Scripting.Dictionary")  
.CompareMode = vbTextCompare  
   For i = 1 To UBound(Arr)  
       temp = Trim(Arr(i, 1))  
       If temp <> "" Then  
       If Not .Exists(temp) Then  
           .Add temp, CStr(1)  
           ii = ii + 1  
           a(ii, 1) = Arr(i, 1)  
           a(ii, 2) = Arr(i, 2)  
       Else  
          iii = iii + 1  
           b(iii, 1) = Arr(i, 1)  
           b(iii, 2) = Arr(i, 2)  
       End If  
       End If  
Next  
 
End With  
 
[D2:E2].Resize(ii) = a
[G2:H2].Resize(ii) = b
 
End Sub
 
... упустил - в конце такая строка должна быть (не смертельно):  
[G2:H2].Resize(iii) = b
 
формульно  
46284 все четные
 
На вскидку:  
 
1. Добавьте столбец перед десятизначным индексом (то есть столбец с индексами у вас будет В).  
2. В столбце А сделайте возрастающую нумерацию: 1, 2, 3, и т.д.  
3. Введите столбец "Частота" (то есть D).  
4. В ячейку D2 формулу: =СЧЁТЕСЛИ($B$2:$B$28;B2)  
5. Все данные с частотой 1 скидывайте в массив №1. В исходном массиве остаются только значения, встречающиеся дважды.  
6. Отсортируйте оставшиеся данные по столбцу А (по возрастанию).  
7. В ячейку Е2 формулу =B2*0  
8. В ячейку С2 формулу =C2*0  
9. В ячейку Е3 формулу =B3*1  
10. В ячейку С3 формулу =C3*1  
11. Копируете блок E2:F3 на всю длину массива вниз  
12. Ставите фильтр на Е "не равно 0" - сносите данные в массив №2  
13. Оставшиеся данные в массив №1  
 
Прикрепил файл :)
Страницы: 1
Читают тему
Наверх