Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается. / 15 сообщений из 15, страница 1 из 1
10.08.2011, 14:13
    #37389139
KpaqpTuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
Собственно вопрос в заголовке темы. Имеем ячейку из которой вызывается наша польз. функция. Нужно передать в функцию адрес нашей ячейки. На данный момент сделал так:
Код: plaintext
1.
=SumSpecs(АДРЕС(СТРОКА(Q16);СТОЛБЕЦ(Q16)))
, где Q16 ячейка, из которой вызываем, а SumSpec поль. функция. Ну или же есть возможность в функции получить адрес ячейки без передачи параметра?
ActiveCell не подходит
...
Рейтинг: 0 / 0
10.08.2011, 14:24
    #37389172
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
KpaqpTukСобственно вопрос в заголовке темы. Имеем ячейку из которой вызывается наша польз. функция. Нужно передать в функцию адрес нашей ячейки. На данный момент сделал так:
Код: plaintext
1.
=SumSpecs(АДРЕС(СТРОКА(Q16);СТОЛБЕЦ(Q16)))
, где Q16 ячейка, из которой вызываем, а SumSpec поль. функция. Ну или же есть возможность в функции получить адрес ячейки без передачи параметра?
ActiveCell не подходитtarget.address
...
Рейтинг: 0 / 0
10.08.2011, 14:56
    #37389271
KpaqpTuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
target.address
Благодарю, погугля узнал что target.address используется для события Worksheet_Change, а как прикрепиться к событию через функцию или наоборот не подскажете?
...
Рейтинг: 0 / 0
10.08.2011, 15:48
    #37389451
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
код пользовательской функции покажите.
...
Рейтинг: 0 / 0
10.08.2011, 16:43
    #37389633
KpaqpTuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
PlanBкод пользовательской функции покажите.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
'Функция подсчета суммы спецификации
Function SumSpecs(Address)
    Application.Volatile
    'Переменная итоговой суммы
    nSum =  0 
    'Определяем букву ячейки
    sColumnName = Mid(Address,  2 , (InStr( 2 , Address, "$")) -  2 )
    'Прогоняем в икле строки спецификации
    For i =  6  To  10000  Step  1 
        If Range("A" + Trim(Str(i))).Value = "" Then
            nSum = nSum + Range(sColumnName + Trim(Str(i))).Value
        End If
        'Условие выхода
        If Range("A" + Trim(Str(i))).Value = "Всего:" Then Exit For
    Next
    'Присваиваем пустое значение если переменная пуста
    If nSum =  0  Then
        nSum = ""
    End If
    SumSpecs = nSum
End Function
Что она делает:, принимает адрес сгруппированных ячеек табличного приложения, по букве адреса получает собственно сам "столбец", затем открывает цикл и сканирует всю таблицу начиная от края шапки и заканчивая фразой всего. Во всего и выводится числовая сумма по заданному столбцу.
Т.е. мне нужно чтобы в функцию передавался адрес ячейки из которой вызывается эта функция, по столбцу этой ячейки проходит суммирование и выводится в эту же ячейку.
П.С. Данный пример работает корректно.
...
Рейтинг: 0 / 0
10.08.2011, 20:06
    #37389994
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
KpaqpTuk,

чего-то у Вас наворочено... А чем не устраивает СУММ? Можно пример таблицы, куда вы вставляете эту функцию? Уверен, можно гораздо проще.
...
Рейтинг: 0 / 0
11.08.2011, 00:02
    #37390160
AndreTM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
Да уж...
Пусть, например, рассчитывается ячейка C20, тогда:
Код: plaintext
=СУММЕСЛИ($A$ 6 :$A$ 19 ;"";C$ 6 :C$ 19 )
и наложить условное форматирование "ноль - белый цвет"...
...
Рейтинг: 0 / 0
11.08.2011, 00:03
    #37390163
R_ Dmitry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
KpaqpTuk,

И кто Вам только это написал ;)
Код: plaintext
Range("A" + Trim(Str(i))).Value

достаточно так
Код: plaintext
Range("A"& i).Value


формулы достаточно =СТОЛБЕЦ(Q16)
и функция будет такой

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Function SumSpecs(Address)
    Application.Volatile
      nSum =  0 
        For i =  6  To  10000 
        If Range("A" & i).Value = "" Then
            SumSpecs = SumSpecs+ cells(Address,i).Value
        End If
            If cells(Address,i).Value = "Всего:" Then Exit For
    Next
     If SumSpecs =  0  Then  nSum = ""
End Function
...
Рейтинг: 0 / 0
11.08.2011, 06:20
    #37390278
kuklp
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
R_ Dmitry,

Дим, все равно не то. С Volatile, да с циклом на 10000 строк(пусть даже с досрочным выходом), а если еще таких формулок пяток на листе будет, Экс повесится без мыла при первом же чихе. Вариант - через find находить конец диапазона и одним махом application.sum, но вариант от AndreTM все равно будет быстрей. И смысл тогда огород городить?
...
Рейтинг: 0 / 0
11.08.2011, 11:49
    #37390754
R__Dmitry
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
kuklp,
Да я и не против........
Нет файла нет нормального решения
...
Рейтинг: 0 / 0
11.08.2011, 14:22
    #37391089
KpaqpTuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
AndreTMДа уж...
Пусть, например, рассчитывается ячейка C20, тогда:
Код: plaintext
=СУММЕСЛИ($A$ 6 :$A$ 19 ;"";C$ 6 :C$ 19 )
и наложить условное форматирование "ноль - белый цвет"...
Ну как говорится век живи, век учись, про СУММЕСЛИ даже и не знал, почитал справку, вбил формулу и вуаля - все посчитано.

На VB не работал, сам пишу процедуры на PL/SQL (Oracle), по жизни дико радуюсь каждому грамму новой информации и новых знаний (мне 21, стаж работы 2 года). Поэтому всем примного благодарен за приведенные замечания, все запомнил, есть куда расти.

Всех благодарю... Хорошего дня :-)
...
Рейтинг: 0 / 0
11.08.2011, 14:50
    #37391129
KpaqpTuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
Шаблон выглядит примерно так, выкладываю картинкой, так как это готовый (выгруженный) из СУБД вариант, в шаблоне кроме шапки всего пара строк.

С помощью формулы СУММЕСЛИ удалось подсчитать итоговую сумму по всем строкам. Итоги по спецификации считаются хитрым способом, может есть возможность подсчитать формулой сумму скажем по Кировскому району, т.е. диапазон формулы должен принимать значение (Имя района:Итого), причем в шаблоне программным способом сперва рисуется шапка группы, затем n-ое число строк организаций, затем подвал.
...
Рейтинг: 0 / 0
11.08.2011, 16:13
    #37391304
KpaqpTuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
Под словом рисуется понимается размножение "нулевой" строки, тобишь в шаблоне создали строку, в ячейки разнесли формулы. Затем программным способом нулевая строка размножается вместе со всеми формулами.
...
Рейтинг: 0 / 0
11.08.2011, 16:18
    #37391316
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
KpaqpTuk, вот ссылка на топик. он предупредит ваши дальнейшие вопросы
...
Рейтинг: 0 / 0
11.08.2011, 17:04
    #37391405
KpaqpTuk
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается.
PlanBKpaqpTuk, вот ссылка на топик. он предупредит ваши дальнейшие вопросы
Благодарю.
...
Рейтинг: 0 / 0
Форумы / Microsoft Office [игнор отключен] [закрыт для гостей] / Excel. Как передать в польз. функцию адрес ячейки, из которой она вызывается. / 15 сообщений из 15, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]