Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> метод MMult класса Application.WorksheetFunction 
:(
    Опции темы
Severyanin
Дата 3.7.2009, 09:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



Всем привет. При отладке скрипта столкнулся с проблемой, не могу понять, в чем суть. Выдается ошибка "Невозможно получить свойсто MMult сласса WorksheetFunction". Так ругается на следующую строку кода:
Код

MulD = Application.WorksheetFunction.MMult(Delta, Application.WorksheetFunction.Transpose(DZI))
. где MulD, Delta и DZISingle. Не могу понять, почему интерпретатор вообще ищет свойство, а не метод. Заранее спасибо за помощь


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Izuver
Дата 6.7.2009, 05:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 352
Регистрация: 13.6.2006
Где: Омск

Репутация: 2
Всего: 2



А где матрицы Delta и DZI, как они выглядят?
PM MAIL ICQ   Вверх
Severyanin
Дата 6.7.2009, 06:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



это вектора разной размерности.
Delta просто считыывается с ячеек листа
Код

 Delta(0) = ThisWorkbook.Sheets("Ëèñò1").Cells(i + 2, 11).Value - M(0)
    Delta(1) = ThisWorkbook.Sheets("Ëèñò1").Cells(i + 2, 14).Value - M(1)
    Delta(2) = ThisWorkbook.Sheets("Ëèñò1").Cells(i + 2, 15).Value - M(2)
    Delta(3) = ThisWorkbook.Sheets("Ëèñò1").Cells(i + 2, 16).Value - M(3)
    Delta(4) = ThisWorkbook.Sheets("Ëèñò1").Cells(i + 2, 22).Value - M(4)
    Delta(5) = ThisWorkbook.Sheets("Ëèñò1").Cells(i + 2, 25).Value - M(5)
    Delta(6) = ThisWorkbook.Sheets("Ëèñò1").Cells(i + 2, 30).Value - M(6)

а DZI - оконный ветор Хэмминга,
Код

 For i = 0 To total - 2
        'Ôîðìèðóåì âåêòîð-îêíî
        tmp = 0
        SumQvMin = 1000000
        minNum = 0
        For j = 0 To total - 2
             ArTmp(0) = (Ots(0) - ThisWorkbook.Sheets("Ëèñò1").Cells(j + 2, 11).Value) ^ 2
             ArTmp(1) = (Ots(1) - ThisWorkbook.Sheets("Ëèñò1").Cells(j + 2, 14).Value) ^ 2
             ArTmp(2) = (Ots(2) - ThisWorkbook.Sheets("Ëèñò1").Cells(j + 2, 15).Value) ^ 2
             ArTmp(3) = (Ots(3) - ThisWorkbook.Sheets("Ëèñò1").Cells(j + 2, 16).Value) ^ 2
             ArTmp(4) = (Ots(4) - ThisWorkbook.Sheets("Ëèñò1").Cells(j + 2, 22).Value) ^ 2
             ArTmp(5) = (Ots(5) - ThisWorkbook.Sheets("Ëèñò1").Cells(j + 2, 25).Value) ^ 2
             ArTmp(6) = (Ots(6) - ThisWorkbook.Sheets("Ëèñò1").Cells(j + 2, 30).Value) ^ 2
             tmp = 0
             For k = 0 To 7
                tmp = tmp + ArTmp(k)
             Next k
             If tmp < SumQvMin Then
                SumQvMin = tmp
                minNum = j
             End If
        Next j
        For j = 0 To total - 2
        Next j
    Next i
    For j = 0 To total - 2
        If j = minNum Then
            DZI(j) = 1
        Else
            DZI(j) = 0
        End If
    Next j


Добавлено через 1 минуту и 18 секунд
Сорь, с кодировкой ошибся. Вместо кракозябр везде "Лист1"


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Izuver
Дата 7.7.2009, 07:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 352
Регистрация: 13.6.2006
Где: Омск

Репутация: 2
Всего: 2



Может вопрос стоит ставить: Как к Application.WorksheetFunction применить FormulaArray?
Или может лучше массив MulD сделать формулой на листе?
PM MAIL ICQ   Вверх
Severyanin
Дата 7.7.2009, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



Бесполезно. Результат тот же. Похоже, придется ручками писать функции перемножения матриц


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Izuver
Дата 8.7.2009, 05:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 352
Регистрация: 13.6.2006
Где: Омск

Репутация: 2
Всего: 2



А как к Application.WorksheetFunction применить FormulaArray, просто я не знаю
PM MAIL ICQ   Вверх
Severyanin
Дата 8.7.2009, 06:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



достаточно просто. что-то типа такого 
Код

ActiveSheet.Range("A1:C5").FormulaArray = Application.WorrksheetFunction.Trenspose(MatrixName)


Добавлено через 2 минуты и 2 секунды
Где MatrixName - какая-то матрица подходящая. А нужную тебе формулу по справке подберешь, я всех методов не помню


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
Izuver
Дата 8.7.2009, 06:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 352
Регистрация: 13.6.2006
Где: Омск

Репутация: 2
Всего: 2



Ну ты простой, я так и сам мог. Ты не в ячейку а в переменную формулу массива воткни, КАК?
PM MAIL ICQ   Вверх
Severyanin
Дата 8.7.2009, 09:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Исследователь
**


Профиль
Группа: Участник
Сообщений: 554
Регистрация: 31.7.2007
Где: Россия, Омск

Репутация: нет
Всего: 9



а нафига тебе формулаАррай тогда? присваивай результат массиву, и все. Там так и в доках написано


--------------------
"Звонким вереском скроются наши следы, и не вспомнят о них. Кто поверит нам, рыцарям павшей звезды из отвергнутых книг? Пусть в узоре времен ни стихов. ни имен, но напомнит забывшим их полуночный крик." Тэм Гринхилл
"Ужели суслик твоего коварства нагадит в плов доверья моего?". Л.Филатов 
PM MAIL WWW ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0458 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.