|
|
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток Борюсь с использованием Application.Frequency в коде. Есть некий массив данных, имеющий координаты A1:A10, 1 2 3 3 2 1 3 2 2 3 для которого нужно оценить частоту встречаемости цифр. Например, до 2, включительно. Сделать это надо через функцию листа =Частота(). Если записывать оценку частоты встречаемости напрямую - всё считается нормально, и в Range("C2") выводится 6: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Однако если модифицировать формулу, введя вместо Range("B1") цифру 2, функция перестает работать. Также она не считается если вместо Range("B1") указывать переменную, в которой происходит перебор цифр: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Какие изменения необходимо ввести в код, чтобы запустить Application.Frequency? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 03:19 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 10:17 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
SirFisher, лучше объявлять r1 как диапазон (Dim r1 as Range), а вызов функции Frequency() для порядка переписать как Application.WorksheetFunction.Frequency(). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 10:26 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlth, почему лучше через Range? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 14:46 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlth, спасибо. Всё работает. Не понятно мне использование Range и Array, но интернет мне в помощь. Еще раз спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 15:09 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
Range - потому как r1 - это объектная переменная, ссылающаяся на диапазон (конкретизируем этот момент). Array - потому, что второй аргумент функции Frecuency() должен быть массивом значений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 17:35 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlth...а вызов функции Frequency() для порядка переписать как Application.WorksheetFunction.Frequency(). Это разные вызовы и функции ведут себя поразному, т.ч. к порядку подобная перезапись имеет слабое отношение :-) Код: plaintext 1. 2. Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 04.05.2010, 18:11 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
KL (XL)vlth...а вызов функции Frequency() для порядка переписать как Application.WorksheetFunction.Frequency(). Это разные вызовы и функции ведут себя поразному, т.ч. к порядку подобная перезапись имеет слабое отношение Автор, судя по описанию, хотел использовать функцию листа. Поскольку, как верно замечено, это разные вызовы, и функции ведут себя по-разному, "для порядка" выбираем документированный вариант. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 00:05 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
KL (XL)Это разные вызовы и функции ведут себя поразному Про разное поведение можете подробней написать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 04:06 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
KL (XL)Это разные вызовы и функции ведут себя поразному Про разное поведение можете подробней написать? SirFisher, вызовы функций frecuency(), min() и max(), которые Вы используете, должны обеспечивать совместимость с Excel 5 и Excel 95: Excel® 2007 VBA Programmer’s ReferenceFor compatibility with Excel 5 and Excel 95, you can use Application rather than WorksheetFunction Если к этому можно добавить что-то ещё, то я присоединяюсь к Вашему вопросу )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 09:45 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
Добавил пересчет данных. Однако теперь функция не возвращает своего значения и выполнение макроса прерывается ошибкой Type mismatch на data_r1. Переназначение типа данных желаемого эффекта не дало. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 10:07 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 10:43 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 10:52 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlth, здесь Код: plaintext не понял мысли про Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 13:40 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
SirFishervlth, здесь Код: plaintext 1. 2. 3. 4. Ваша CountIf(r1, "<>""") у меня вернула кол-во всех ячеек в диапазоне, что равносильно r1.cells.count CountIf(r1, "<>") возвращает кол-во непустых ячеек в r1 (ячеек, в которых есть значение или формула). Здесь у Вас Код: plaintext Используйте freq(НомерЭлемента). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 14:04 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlth Код: plaintext Записал как Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 14:22 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
SirFisher, почему "i" ? - ставте 1 (или 2 - смотря что Вы отслеживаете). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 14:26 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 14:31 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
или Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 14:33 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlth, вот теперь всё работает. Не ожидал, что эта функция будет столь заковыристой. Спасибо. В заключение. Скажите, пожалуйста, это Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 14:52 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
SirFishervlth, вот теперь всё работает. Не ожидал, что эта функция будет столь заковыристой. Спасибо. В заключение. Скажите, пожалуйста, это Код: plaintext Из Справки: "Количество элементов в возвращаемом массиве на единицу больше числа элементов в массиве массив_интервалов. Дополнительный элемент в возвращаемом массиве содержит количество значений, больших чем максимальное значение в интервалах. Например, при подсчете трех диапазонов значений (интервалов), введенных в три ячейки, убедитесь в том, что функция ЧАСТОТА возвращает значения в четырех ячейках. Дополнительная ячейка возвращает число значений в массив_данных, больших чем значение границы третьего интервала." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 15:18 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlthKL (XL)Это разные вызовы и функции ведут себя поразному Про разное поведение можете подробней написать? SirFisher, вызовы функций frecuency(), min() и max(), которые Вы используете, должны обеспечивать совместимость с Excel 5 и Excel 95: Excel® 2007 VBA Programmer’s ReferenceFor compatibility with Excel 5 and Excel 95, you can use Application rather than WorksheetFunction Если к этому можно добавить что-то ещё, то я присоединяюсь к Вашему вопросу )) К этому еще можно добавить как минимум два пункта раз уж вопрос SirFisher о разном поведении: 1) По-разному возвращаются ошибки (то, что я пытался проиллюстрировать примерами кода выше). Функции коллекции WorksheetFunction возвращают значение ошибки и прерывают код, а функции из Application возвращают значение типа String с номером ошибки. 2) Функции коллекции WorksheetFunction обычно выполняются быстрее функций из Application, что обусловлено методом доступа к ним ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 15:29 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
KL (XL), наверное я не правильно использую данную функцию, т.к. при построении вариационных рядов мне удобней было прописывать ее со ссылкой не на массив, а на единичный интервал, например =частота(A1:A100;B1). Правда при этом она возвращала кумуляту (накопление частот), что решалось простым вычитанием суммы предыдущих частот. Вероятно, из-за такого использования функции и возникли у меня проблемы с ее реализацией через VBA ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 15:39 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
SirFisherKL (XL), наверное я не правильно использую данную функцию, т.к. при построении вариационных рядов мне удобней было прописывать ее со ссылкой не на массив, а на единичный интервал, например =частота(A1:A100;B1). Правда при этом она возвращала кумуляту (накопление частот), что решалось простым вычитанием суммы предыдущих частот. Вероятно, из-за такого использования функции и возникли у меня проблемы с ее реализацией через VBA Мне не очень понятно использование данной функции в вашем случае. Судя по обсуждению, проблема была в использовании неверного типа данных в параметрах. Опять-таки, если потом надо вычитать сумму предыдущих частот, отчего сразу не использовать COUNTIF? Либо не сделать что-то типа: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 16:32 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
SirFisherВ заключение. Скажите, пожалуйста, это Код: plaintext ЧАСТОТА - Вычисляет распределение значений по интервалам и возвращает вертикальный массив , содержащий на один элемент больше, чем массив интервалов.(Первый аргумент функции - массив данных, второй - массив интервалов) Иллюстрация (аналогичный вертикальный массив - из двух "строк" и одного "столбца"): Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.05.2010, 21:24 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
KL (XL), в данной теме я с Вашей помощью и помощью vlth разбирался в применении функции "=ЧАСТОТА()". Она является составной частью функции, рассчитывающей критерий Колмогорова-Смирнова (код ниже), который готовлю для оценки сходства/различия вариационных рядов. Если будут предложения по модернизации кода - буду рад. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. Функция не закончена. В дальнейшем, в частности, будет добавлена часть кода для строительства вариационного ряда, в т.ч. для определения шага между классами вариационного ряда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 02:55 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
И еще. Каким образом подвесить справку к создаваемой пользовательской функции? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 03:08 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
Не по сути (изменены типы переменных в передаваемых аргументах и других объявлениях, а также структура функции) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. SirFisher, в опубликованном варианте . Round() "висит в воздухе". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 09:04 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlth, да, поторопился опубликовать, вот и "подвисло" округление. Не соглашусь насчет перевода Krit_KS_temp в Double, он в Variant работает ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 09:41 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
SirFisherНе соглашусь насчет перевода Krit_KS_temp в Double, он в Variant работаетПарадоксальная фраза Вы хотите сказать, что с Double не работает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 09:50 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
SirFisher, кстати, подумайте над типом переменной i : как-то странно смотрится Double в кач-ве счётчика цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 09:57 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlth, да, выдавал ошибку. и критериальный перебор в данном варианте у меня был не рабочий. Вот этот вариант уже более-менее Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 10:02 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlthSirFisher, кстати, подумайте над типом переменной i : как-то странно смотрится Double в кач-ве счётчика цикла. Согласен, странноват. Только приращение не всегда целочисленное, могут быть и десятые. Надеюсь, что сотых и тысячных не будет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 10:09 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
SirFisher, тогда надо шаг приращения задавать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 10:10 |
|
||
|
...использование Application.Frequency
|
|||
|---|---|---|---|
|
#18+
vlth, да, это в планах стоит по расширению функционала. Сейчас подбираю методику построения вариационного ряда, вот от нее и буду танцевать с установкой приращения шага ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.05.2010, 10:27 |
|
||
|
|

start [/forum/topic.php?all=1&fid=61&tid=2178169]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
78ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
89ms |
get tp. blocked users: |
1ms |
| others: | 241ms |
| total: | 464ms |

| 0 / 0 |
