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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 14.01.2011, 13:19   #1
osset
Новичок
Джуниор
 
Регистрация: 14.01.2011
Сообщений: 5
По умолчанию четные не четные строки

Приветствую!
в работе задействуются 1 столбец и n-количество строк в этом столбце.
вопрос в следующем:
Как можно сделать так чтоб из каждой 2 строки в столбце вычиталось каждая 1 строка или другими словами, чтоб из четных строк с числами вычитались не четные строки с числами.
Вложения
Тип файла: rar пример.rar (8.2 Кб, 13 просмотров)
osset вне форума Ответить с цитированием
Старый 14.01.2011, 14:31   #2
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Написать в нужных ячейках две простые формулы типа =E2-E1, затем выделить эту область (с пустыми ячейками) и протянуть вниз?
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.01.2011, 14:35   #3
osset
Новичок
Джуниор
 
Регистрация: 14.01.2011
Сообщений: 5
По умолчанию

1)мне бы желательно это в вба выразить
2)такой вариант не подоидет потому что не известно количество ячеек между двумя значениями(
osset вне форума Ответить с цитированием
Старый 14.01.2011, 14:43   #4
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Теперь понятно, не номера строк, а положенин по порядку считать нужно.
На ВБА так можно - диапазон в массив (или прямо с листа), затем перебор и вычитаем из второго встреченного значение первое.
Собственно код нужно ещё продумать, а алгоритм примерно наверное такой.

P.S. Промежуточные значения нужны?

Вот без промежуточных прикидка:
Код:
Sub tt()
Dim flag As Boolean

For Each cc In [a1:a40]
If cc <> "" Then
If flag Then
sum_ = sum_ + cc.Value - temp
flag = False
Else
temp = cc.Value
flag = True
End If
End If
Next

End Sub
Вывода на лист пока нет, сумма в sum_ собирается.
webmoney: E265281470651 Z422237915069 R418926282008

Последний раз редактировалось Hugo121; 14.01.2011 в 14:51.
Hugo121 вне форума Ответить с цитированием
Старый 14.01.2011, 15:01   #5
IgorGO
Новичок
СтарожилДжуниор
 
Аватар для IgorGO
 
Регистрация: 05.02.2008
Сообщений: 9,487
По умолчанию

а вот и формула нашлась:
Код:
=СУММ(R1C1:R36C1*(-1)^ОСТАТ(МУМНОЖ(ЕСЛИ(СТРОКА(R1C1:R36C1)>=ТРАНСП(СТРОКА(R1C1:R36C1));1;);--(R1C1:R36C1<>0));2))
громоздкая слегка, но короче чем код писать
Вложения
Тип файла: rar Книга528.rar (14.6 Кб, 17 просмотров)
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
IgorGO вне форума Ответить с цитированием
Старый 14.01.2011, 15:08   #6
osset
Новичок
Джуниор
 
Регистрация: 14.01.2011
Сообщений: 5
По умолчанию

Цитата:
Сообщение от IgorGO Посмотреть сообщение
а вот и формула нашлась:
Код:
=СУММ(R1C1:R36C1*(-1)^ОСТАТ(МУМНОЖ(ЕСЛИ(СТРОКА(R1C1:R36C1)>=ТРАНСП(СТРОКА(R1C1:R36C1));1;);--(R1C1:R36C1<>0));2))
громоздкая слегка, но короче чем код писать
увы не так(
Вложения
Тип файла: rar Книга528.rar (15.1 Кб, 18 просмотров)
osset вне форума Ответить с цитированием
Старый 14.01.2011, 15:08   #7
Hugo121
Старожил
 
Регистрация: 11.05.2010
Сообщений: 5,166
По умолчанию

Код написать проще
webmoney: E265281470651 Z422237915069 R418926282008
Hugo121 вне форума Ответить с цитированием
Старый 14.01.2011, 15:18   #8
osset
Новичок
Джуниор
 
Регистрация: 14.01.2011
Сообщений: 5
По умолчанию

Hugo121 молочинка то что доктор прописал)
osset вне форума Ответить с цитированием
Старый 14.01.2011, 15:18   #9
osset
Новичок
Джуниор
 
Регистрация: 14.01.2011
Сообщений: 5
По умолчанию

ВСЕМ КТО ОТКЛИКНУЛСЯ БОЛЬШОЕ СПАСИБО)
osset вне форума Ответить с цитированием
Старый 14.01.2011, 15:30   #10
nilem
Форумчанин
 
Регистрация: 25.04.2010
Сообщений: 616
По умолчанию

На 1 переменную меньше
Код:
Sub tt2()
Dim cc As Range, sum_ As Double
Dim k As Long

For Each cc In [a1:a40]
    If cc <> "" Then
        k = k + 1
        sum_ = IIf(k Mod 2 = 0, sum_ + cc.Value, sum_ - cc.Value)
    End If
Next
MsgBox sum_
End Sub
nilem вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Четные не четные числа. (Pascal/Delphi) Wild_klas Помощь студентам 1 20.11.2010 22:56
Выравнивание в колонтитуле (четные, не четные страницы) Олег678 Microsoft Office Word 5 20.01.2010 09:06
в заданном массиве вывести все четные числа leysan Помощь студентам 2 09.12.2009 22:08
четные и нечетные (delphi 7) STIFLER32 Помощь студентам 8 19.11.2009 17:24
си четные числа world12_tk Помощь студентам 3 18.03.2009 17:33