|
|
|
...использование 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 |
|
||
|
|

start [/forum/topic.php?fid=61&fpage=163&tid=2178169]: |
0ms |
get settings: |
9ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
61ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
69ms |
get tp. blocked users: |
2ms |
| others: | 221ms |
| total: | 398ms |

| 0 / 0 |
