2015-06-24 3 views
0

У меня есть код, который имеет переменный диапазон со многими категориями в каждом столбце, который отображает данные. Мне нужно выделить наименее часто встречающиеся значения в процентах от общего количества ячеек.Найти и выделить Наименее распространенные события в переменном диапазоне

Если в столбце 300 ячеек, ему необходимо найти значение (из многих возможных повторяющихся значений), которое встречается наименее часто. Это бонус, если код может предвидеть общее число и дает только 5% или 10% от всего столбца.

В настоящее время я пытаюсь использовать функцию в верхней ячейке, которая найдет наименее распространенное вхождение, и код просто выделит, какое значение будет вниз по ячейке по мере ее повторения (и выделите каждую из наименее общих .

трудность я имею в два раза.

  1. Там может быть более чем один наименьшее общее значение, которое по-прежнему ниже 10% от общей суммы значений
  2. возможность автоматизировать этот поиск так, что могут быть выполнены и выделены для всех более чем 100 столбцов с d ifferent категорий и разных значений в каждой колонке

Если вы слишком расплывчаты, не стесняйтесь задавать вопросы о том, что я собираюсь, и я буду отвечать быстро.

Вот как выглядят данные. Как вы можете видеть, объединенные заголовки для каждого столбца с различными пробелами и сперматографически помещенными данными соответствуют определенному столбцу. enter image description here

Это предлагаемый код, который по-прежнему не выделяет то, что я бы хотел. У этого есть две проблемы. 1: он будет выделять ВСЕ данные в одном диапазоне, если в строке не будет отличающегося значения. 2: Он будет выделять заголовки столбцов. enter image description here

Это выделенные данные, которые по-прежнему недостаточно полны. enter image description here

В некоторых случаях столбец истинно не совпадают цели кода, например, в одном столбце, число 12 было отмечено вниз по колонке (67 появлений), где есть меньше мест где другие номера. (8 происходит 29 раз и не подсвечивается)

+0

Я пытаюсь обмотать голову вокруг этого, но не удался. У вас есть код? Значения в строках? Категории в столбцах? Какие из них являются переменными? Различается ли количество столбцов на строку? Что вы имеете в виду под категориями и что вы подразумеваете под «диапазоном» «кода»? Не могли бы вы попытаться записать некоторые данные образца в своем сообщении, а также то, что вы хотели бы рассчитать и где должен отображаться перценуж? – LocEngineer

+0

Вы ссылаетесь на обе строки и столбцы в запутанном виде, особенно во втором абзаце. Является ли слово «строка» опечаткой? –

+0

Вот лучшее, что я могу сделать. В каждой колонке обозначены 100-значные категории. Каждый столбец является отдельной категорией.Например, один столбец может иметь метку «Размер пикселя». Затем под ними будут ячейки, принадлежащие к этой категории. Для размера пикселя возможные ячейки: 1: несколько различных чисел. (например: 24, 48, 92 и т. д.) 2: «Пользовательский». 3: Пустые ячейки –

ответ

1

Я просто взломал, казалось бы, рабочий пример. Попробуйте это здесь:

Sub frequenz() 
Dim col As Range, cel As Range 
Dim letter As String 
Dim lookFor As String 
Dim frequency As Long, totalRows As Long 
Dim relFrequency As Double 
Dim ran As Range 

ran = ActiveSheet.Range("A1:ZZ65535") 
totalRows = 65535 

For Each col In ran.Columns 
    '***get column letter*** 
    letter = Split(ActiveSheet.Cells(1, col.Column).Address, "$")(1) 
    '******* 
    For Each cel In col.Cells 
     lookFor = cel.Text 
     frequency = Application.WorksheetFunction.CountIf(Range(letter & "2:" & letter & totalRows), lookFor) 
     relFrequency = frequency/totalRows 

     If relFrequency <= 0.001 Then 
      cel.Interior.Color = ColorConstants.vbYellow 
     End If 
    Next cel 

Next col 

End Sub 

Возможно, вы делали именно то, что искали.

Изменить: исправлен адрес получения.

+0

Я собираюсь проверить это прямо сейчас , Я вернусь как можно скорее, насколько это шаг в правильном направлении! Спасибо! –

+0

Итак, проблема, с которой я столкнулся, заключается в том, что похоже, что, возможно, происходит противоположный эффект, все становится желтым на ходу, за исключением первого значения в начале конца некоторых строк. Нечетный ... Я действительно думаю, что этот код находится в правильном направлении, я постараюсь с ним поработать, чтобы посмотреть, что я могу сделать. –

+0

Забавный. 'col.Cells (1, col.Column) .Address', кажется, возвращает неправильный адрес; поэтому поиск происходит в неправильном столбце! Починил это. Теперь лучше работать. – LocEngineer