Уже сил нет разбираться.... Помогите кто чем может: файл реализовывает подсчет закрашенных ячеек и вывод значения в ячейку. но одно большое но мешает - перед тем как выполнить макрос нужно выполнить условное форматирование(заливка цветом не повторяющихся значений), потом нужно выбрать диапазон руками и отметить через ctrl закрашенную ячейку как образец. Какими функциями и формулами можно автоматизировать процесс?
Уже сил нет разбираться.... Помогите кто чем может: файл реализовывает подсчет закрашенных ячеек и вывод значения в ячейку. но одно большое но мешает - перед тем как выполнить макрос нужно выполнить условное форматирование(заливка цветом не повторяющихся значений), потом нужно выбрать диапазон руками и отметить через ctrl закрашенную ячейку как образец. Какими функциями и формулами можно автоматизировать процесс?Buloshka
nilem, видела это решение. но у меня уже вычисляются нужные значения и даже считается их количество. нужно прикрутить диалоговое окно с выбором диапазона и выбором ячейки-образца
nilem, видела это решение. но у меня уже вычисляются нужные значения и даже считается их количество. нужно прикрутить диалоговое окно с выбором диапазона и выбором ячейки-образцаBuloshka
Public Function GetDistinctCount(rng As Range) As Long Dim x, v, i As Long x = Intersect(rng, rng.Worksheet.UsedRange).Value With CreateObject("Scripting.Dictionary") .CompareMode = 1 For Each v In Intersect(rng, rng.Worksheet.UsedRange).Value If Len(v) Then .Item(v) = .Item(v) + 1 Next v For Each v In .keys If .Item(v) = 1 Then i = i + 1 Next v End With GetDistinctCount = i End Function
[/vba] На листе пишем такую формулу
Код
=GetDistinctCount(A3:C11)
A3:C11 - это диапазон из вашего примера. Сразу считаем уникальные без повторов, и УФ не нужно.
Все-таки попробуйте UDF, вот такую: [vba]
Код
Public Function GetDistinctCount(rng As Range) As Long Dim x, v, i As Long x = Intersect(rng, rng.Worksheet.UsedRange).Value With CreateObject("Scripting.Dictionary") .CompareMode = 1 For Each v In Intersect(rng, rng.Worksheet.UsedRange).Value If Len(v) Then .Item(v) = .Item(v) + 1 Next v For Each v In .keys If .Item(v) = 1 Then i = i + 1 Next v End With GetDistinctCount = i End Function
[/vba] На листе пишем такую формулу
Код
=GetDistinctCount(A3:C11)
A3:C11 - это диапазон из вашего примера. Сразу считаем уникальные без повторов, и УФ не нужно.nilem