Я использую лист 2 для извлечения данных из листа 1.Excel Сортировка динамического списка или использовать VBA затем сортировать
A9 имеет эту формулу в нем:
=(INDEX(sheet1!$G$9:$G$7000,MATCH(0,INDEX(COUNTIF($A$8:A8,sheet1!$G$9:$G$7000),0,0),0))
(он смотрит через колонку G и вынимает дубликаты и пробелы)
В9 имеет следующую формулу:
=IF(MAX(IF($A9=sheet1!G:G,sheet1!E:E))=MIN(IF($A9=sheet1!G:G,sheet1!E:E)),"Only 1 Entry",MAX(IF($A9=sheet1!G:G,sheet1!E:E))-MIN(IF($A9=sheet1!G:G,sheet1!E:E)))
(это выглядит в колонке а на sheet2 затем смотрит даты, Min и Max на Лист1, чтобы определить, сколько лет определенный элемент)
C9 имеет следующую формулу:
=SUMIF(sheet1!$G$9:$G$7000,A9,sheet1!$B$9:$B$7000)
(это на внешний вид, как колонке А в листе 2 и ссылки sheet1 добавить час)
Проблема в том, что если я сортирую колонку C на листе2, ничего не меняется. Я думаю, потому что, пытаясь отфильтровать его, динамическая формула переупорядочивает его обратно к тому, что находится на листе 1. В принципе, как бы вы ни пытались его фильтровать, список остается таким же, как и на основе sheet1. Я даже попытался отсортировать столбцы на листе 1, чтобы увидеть, изменится ли лист 2, но так как данные в столбце C листа 2 фактически не существуют на листе 1, который тоже не работает.
Как фильтровать столбцы C или даже B и другие с помощью этих динамических формул?
Я искал в Интернете, чтобы найти решение, но не могу найти что-либо, что работает. Если я не могу использовать этот динамический список, я подумал, что, возможно, я мог бы создать список в столбце A sheet 2 с VBA и сделать список статическим.
Я тоже искал VBA для удаления дубликатов и пробелов, но по какой-то причине я придумываю пробел. Я нашел некоторых, которые делали часть, но не обоих.
Sub MakeUnique()
Dim vaData As Variant
Dim colUnique As Collection
Dim aOutput() As Variant
Dim i As Long
'Put the data in an array
vaData = Sheet1.Range("A5:A7000").Value
'Create a new collection
Set colUnique = New Collection
'Loop through the data
For i = LBound(vaData, 1) To UBound(vaData, 1)
'Collections can't have duplicate keys, so try to
'add each item to the collection ignoring errors.
'Only unique items will be added
On Error Resume Next
colUnique.Add vaData(i, 1), CStr(vaData(i, 1))
On Error GoTo 0
Next i
'size an array to write out to the sheet
ReDim aOutput(1 To colUnique.Count, 1 To 1)
'Loop through the collection and fill the output array
For i = 1 To colUnique.Count
aOutput(i, 1) = colUnique.Item(i)
Next i
'Write the unique values to column B
Sheet2.Range("A9").Resize(UBound(aOutput, 1), UBound(aOutput, 2)).Value = aOutput
End Sub
Это VBA создает список не дубликатов, но оставляет заготовки ...
Итак, как я могу иметь столбцы B и C на листе 2 будет сортируемым с колонка А быть получена из данных на листе 1 без дубликатов и пробелов? Есть ли способ сортировки и использования динамической формулы, или это должно быть сделано с помощью VBA?
Эта часть прекрасно работает, спасибо. Теперь мне просто нужно выяснить часть сортировки :) Кажется, с уравнениями, которые у меня есть в столбце C, когда я сортирую, он оставляет кучу «пробелов» наверху .... – DA69
Вы сортируете по макрос ?? –
для очистки уравнения в столбце CI добавил: = IF (A9 = "", "", SUMIF (Sheet1! $ G $ 9: $ G $ 7000, A9, Sheet1! $ B $ 9: $ B $ 7000)) на листе 2 он идет от C9 до C500. Если я сортирую вручную от A до Z, он отлично работает, но если я сортирую Z-A, результат заканчивается внизу, оставляя пробелы в верхней части. Я пытаюсь сделать динамический диапазон, который будет охватывать только видимые числа, но пока не работает. Затем я хочу превратить это в VBA. – DA69