Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 10.02.2016, 16:53   #1
KApSuL
Форумчанин
 
Регистрация: 04.09.2010
Сообщений: 119
По умолчанию Увеличить номер столбца ячейки на +2 в макросе

Во общем проблема я так понимаю в том, что я хочу добавить к столбцу ячейки с адресом D2 +2 на столбец чтобы получился адрес F2

Код:
Function суммеслимн3d(diapSum As Range, diapUsl As Range, usl)

Dim i&, dS$, dU$, sColumnNamedS, sRowNumberdS, sColumnNamedU, sRowNumberdU


dS = diapSum.Address 'D2
dU = diapUsl.Address 'C2

sColumnNamedS = Mid(dS, 2, (InStr(2, dS, "$") - 2))
sRowNumberdS = Mid(dS, (InStr(2, dS, "$") + 1))
sColumnNamedU = Mid(dU, 2, (InStr(2, dU, "$") - 2))
sRowNumberdU = Mid(dU, (InStr(2, dU, "$") + 1))

For i = 1 To Application.Caller.Worksheet.Index - 1
Do While sColumnNamedS < 22
суммеслимн3d = суммеслимн3d + _
    Application.SumIfs(Worksheets(i).Cells(sRowNumberdS, sColumnNamedS), Worksheets(i).Cells(sRowNumberdU, sColumnNamedU), usl)
    
sColumnNamedS = sColumnNamedS + 2
sColumnNamedU = sColumnNamedU + 2

Loop
Next
End Function
Подскажите, пожалуйста, как такое можно провернуть?Может как-то переводить в R1C1 формат или типа того?
Вложения
Тип файла: zip zvorot_calc2.zip (308.2 Кб, 4 просмотров)
KApSuL вне форума Ответить с цитированием
Старый 10.02.2016, 17:01   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

если diapSum i diapUsl - ячейки D2, C2 то разве
diapSum.Column, diapUsl.Column не дадут номера столбцов?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 10.02.2016, 17:15   #3
KApSuL
Форумчанин
 
Регистрация: 04.09.2010
Сообщений: 119
По умолчанию

чёт не выходит =(
Пробую типа такого, пишет ошибку
Код:
Sub 3d()
Dim s1, s2
s1 = Worksheets(1).Cells(2, 4)
MsgBox (s1)
s2 = Range(s1).Column
MsgBox (s2)
End Sub
А всё кажись понял, спс
Код:
Sub 3d()
Dim s1, s2
s1 = Worksheets(1).Cells(2, 4).Address
MsgBox (s1)
s2 = Range(s1).Column
MsgBox (s2)
End Sub

Последний раз редактировалось KApSuL; 10.02.2016 в 17:20.
KApSuL вне форума Ответить с цитированием
Старый 10.02.2016, 17:32   #4
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

Цитата:
разве diapSum.Column, diapUsl.Column не дадут номера столбцов
дадут... и что?

и что теперь KApSuL будет с этим делать?

Aleksandr H., разве по предыдущей теме не понятно, что подсказывать - бесполезно, полезно для ТС может быть только готовое и точное решение его задачи, а точное решение задачи возможно тогда, когда задача точно обьяснена, без точных обьяснений какой смысл "ломать копья"?

смысл форума не только в том, чтобы помочь конкретному человеку, но и в том чтобы накопить некую базу решений, сюда приходят другие люди, и вместо решения своего вопроса сталкиваются и с долгой, муторной и в конечном итоге бесполезной для них перепиской
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 10.02.2016, 17:40   #5
KApSuL
Форумчанин
 
Регистрация: 04.09.2010
Сообщений: 119
По умолчанию

вот запилил, вроде работает, но почему то перестало работать по всем страницам книги
Код:
Function SUMIFM3d(diapSum As Range, diapUsl As Range, usl)

Dim i&, dS$, dU$, dSc, dUc, dSr, dUr

dS = diapSum.Address 'D2
dU = diapUsl.Address 'C2

dSc = Range(dS).Column
dUc = Range(dU).Column
dSr = Range(dS).Row
dUr = Range(dU).Row

For i = 1 To Application.Caller.Worksheet.Index - 1

Do While dSc <= 22
  SUMIFM3d = SUMIFM3d + _
    Application.SumIfs(Worksheets(i).Cells(dSr, dSc), Worksheets(i).Cells(dUr, dUc), usl)
    
    dSc = dSc + 2
    dUc = dUc + 2

Loop
Next

End Function
Подскажет может кто в чём проблема подсчёта по всей книге?
Я понимаю что толком ничего не понимаю, но всё же пытаюсь...
Вложения
Тип файла: zip zvorot_calc2.zip (313.5 Кб, 8 просмотров)

Последний раз редактировалось KApSuL; 10.02.2016 в 17:47.
KApSuL вне форума Ответить с цитированием
Старый 10.02.2016, 20:45   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Поставь
Код:
dSc = Range(dS).Column
dUc = Range(dU).Column
dSr = Range(dS).Row
dUr = Range(dU).Row
после
Код:
For i = 1 To Application.Caller.Worksheet.Index - 1
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 10.02.2016, 23:58   #7
KApSuL
Форумчанин
 
Регистрация: 04.09.2010
Сообщений: 119
По умолчанию

спасибо большое, помогло
прицеплю файлик, мо кому надо будет
Вложения
Тип файла: zip zvorot_calc2.zip (97.5 Кб, 9 просмотров)

Последний раз редактировалось KApSuL; 11.02.2016 в 09:58.
KApSuL вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание столбца в макросе и др. Dr.House69 Microsoft Office Excel 2 17.04.2014 12:19
Значение ячейки на пересечении столбца и активной ячейки Lamo Microsoft Office Excel 2 27.07.2013 20:55
Номер столбца ячейки a2alex Microsoft Office Excel 3 19.02.2013 14:38
Как вывести на экран номер строки с максимальной суммой элементов и номер столбца с минимальной суммой? Vetal888888 C# (си шарп) 4 20.12.2011 13:46
Увеличить значения столбца на 50% saizar Microsoft Office Excel 7 02.04.2011 15:07