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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 20.03.2012, 09:51   #1
Sanka_i
Новичок
Джуниор
 
Регистрация: 20.03.2012
Сообщений: 8
По умолчанию Как редактировать формулу суммы в минус?

Здравствуйте! Помогите пожалуйста! Ломаю голову уже второй день ни чего не получается.
Есть ячейка с формулой "=СУММ(L7)" при добавлении 4тырех столбцов нужно что бы это формула увеличилась еще на одну ячейку "=СУММ(L7)+СУММ(P7)"

Это я делаю след образом:
1. Нахожу эту ячейку с формулой после того как добавили 4 столбца
Cells(7, s + 5).Select
2. Присваиваю формуле эту же формулу + сумма предыдущей 4ертой ячейке
ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 + "+SUM(RC[-4])"

Это все работает как надо!

Но теперь мне нужно сделать обратную операцию! С чем я справиться и не могу.
После того как я удаляю 4 столбца в одном из которых была ссылка на ячейку формула выглядит так "=СУММ(L7)+СУММ(#ССЫЛКА!)" Но это фигня я просто присваиваю переменной формулу до того как удалить 4 столбца и когда пытаюсь сминусовать уже "ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 - "+SUM(RC[-4])"" этот фокус не проходит Эксель ругается.

Как прописать правильно парни??? Очень нужно!!!

ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 - "+SUM(RC[-4])"
Sanka_i вне форума Ответить с цитированием
Старый 20.03.2012, 11:28   #2
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

А какой смысл суммировать одну ячейку? В Вашем случае достаточно:
Код:
ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 & "-RC[-4]"
или:
Код:
ActiveCell.FormulaR1C1 = Replace(ActiveCell.FormulaR1C1, "+SUM(RC[-4])", "")
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728

Последний раз редактировалось kuklp; 20.03.2012 в 11:35.
kuklp вне форума Ответить с цитированием
Старый 20.03.2012, 11:53   #3
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

В ячейку M1 заносишь формулу:
Код:
=ЕСЛИ(СТОЛБЕЦ(RC)=17;СУММ(RC[-1];ДВССЫЛ("RC[-5]";ЛОЖЬ));RC[-1])
она при добавлении перемещении данной ячейки в R1 будет считать сумму L1 + P1, а иначе - значение из L1
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 20.03.2012 в 11:59.
DiemonStar вне форума Ответить с цитированием
Старый 20.03.2012, 12:38   #4
Sanka_i
Новичок
Джуниор
 
Регистрация: 20.03.2012
Сообщений: 8
По умолчанию

Ни фига у меня не выходит ((( Уже глаза болят реально. Можно ли я вам тут файлик оставлю глянет кому не лень. поправите.

Там скажем так таблица склада и рядом приход две кнопки "Добавить приход" с ней я разобрался и "Удалить приход" С ней я тоже разобрался кроме вот этой формулы (

kuklp это я как в пример суммирования одной ячейки. Чем больше будет приход тем больше будет суммирования ячеек.


Как бы тут еще файлик закинуть
Sanka_i вне форума Ответить с цитированием
Старый 20.03.2012, 12:40   #5
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

В расширенном ответе нажмите "Вложить файл"
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Старый 20.03.2012, 13:00   #6
Sanka_i
Новичок
Джуниор
 
Регистрация: 20.03.2012
Сообщений: 8
По умолчанию файлик

Вот собственно говоря моя головная боль

Копия .zip

С меня пиво!!! Помогите! )

Для начала по нажимайте кнопку добавить что б понять смысл

Последний раз редактировалось Sanka_i; 20.03.2012 в 13:05.
Sanka_i вне форума Ответить с цитированием
Старый 20.03.2012, 13:34   #7
kuklp
Участник клуба
 
Регистрация: 02.05.2010
Сообщений: 1,390
По умолчанию

Жесть. А если б ячеек были тысячи?
Так добавить:
Код:
Sub ДобавитьПриход()
'
' Макрос2 Макрос
'

'Присваиваем переменной u - 11
    u = 11
    'Присваиваем переменной s - 11
    s = 11
    'Присваиваем переменной n - 0
    n = 0
    'Входим в цикл до того момента пока u не будит равняться 11
    While u = 11
        'Счетчик: с каждым разом s и n увеличивается на 1
        s = s + 4
        n = n + 1
        'В случии пустой ячейки u присвоится 12 - выход из цикла
        If Cells(5, s) = "" Then
            u = 12
        End If
    Wend
    'Снимает защиту листа
    'ActiveSheet.Unprotect
    'Копируем фориу
    Columns("J:M").Select
    Selection.Copy
    Columns(s - 1).Select
    Selection.Insert Shift:=xlToRight
    'Ячейки присваивается номер заказа
    Cells(5, s) = n
    Cells(5, s + 1) = Date
    Application.CutCopyMode = False
    Columns(s).ColumnWidth = 10.71
    Columns(s + 1).ColumnWidth = 6.57
    Columns(s + 2).ColumnWidth = 11
    'Правим формулы по кол-во
    Range("X7:X13,X15:X32,X34:X43").FormulaR1C1 = Range("X7").FormulaR1C1 & "+RC[-4]"
    'Защищает лист
    'ActiveSheet.EnableOutlining = True
    '   ActiveSheet.Protect Contents:=True, Scenarios:=True, UserinterfaceOnly:=True
End Sub
А так вернуть назад:
Код:
Public Sub www()
    Range("X7:X13,X15:X32,X34:X43").FormulaR1C1 = Replace(Range("X7").FormulaR1C1, "+RC[-4]", "")
End Sub
mailto: kuklp60@gmail.com, ящики для благодарностей:
WM Z206653985942, R334086032478, U238399322728
kuklp вне форума Ответить с цитированием
Старый 20.03.2012, 13:41   #8
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

пробиваешь значения итоговой суммы вот так:
Код:
=СУММЕСЛИ($I$6:T$6;"Сумма";$I7:T7)
в 7-ю строку и протягиваешь по всему столбцу - все значения сумм из приходов будут суммироваться здесь.

аналогично можно сделать и для подсчёта общего количества

Цитата:
Жесть. А если б ячеек были тысячи?
максимум - 255 столбцов. Поделив на 4 получим около 60 приходов.
Правильно поставленная задача - три четверти решения.

Последний раз редактировалось DiemonStar; 20.03.2012 в 13:56.
DiemonStar вне форума Ответить с цитированием
Старый 20.03.2012, 14:06   #9
Sanka_i
Новичок
Джуниор
 
Регистрация: 20.03.2012
Сообщений: 8
По умолчанию

Цитата:
Сообщение от kuklp Посмотреть сообщение
Жесть. А если б ячеек были тысячи?
Так добавить:
Код:
Sub ДобавитьПриход()
'
' Макрос2 Макрос
'

'Присваиваем переменной u - 11
    u = 11
    'Присваиваем переменной s - 11
    s = 11
    'Присваиваем переменной n - 0
    n = 0
    'Входим в цикл до того момента пока u не будит равняться 11
    While u = 11
        'Счетчик: с каждым разом s и n увеличивается на 1
        s = s + 4
        n = n + 1
        'В случии пустой ячейки u присвоится 12 - выход из цикла
        If Cells(5, s) = "" Then
            u = 12
        End If
    Wend
    'Снимает защиту листа
    'ActiveSheet.Unprotect
    'Копируем фориу
    Columns("J:M").Select
    Selection.Copy
    Columns(s - 1).Select
    Selection.Insert Shift:=xlToRight
    'Ячейки присваивается номер заказа
    Cells(5, s) = n
    Cells(5, s + 1) = Date
    Application.CutCopyMode = False
    Columns(s).ColumnWidth = 10.71
    Columns(s + 1).ColumnWidth = 6.57
    Columns(s + 2).ColumnWidth = 11
    'Правим формулы по кол-во
    Range("X7:X13,X15:X32,X34:X43").FormulaR1C1 = Range("X7").FormulaR1C1 & "+RC[-4]"
    'Защищает лист
    'ActiveSheet.EnableOutlining = True
    '   ActiveSheet.Protect Contents:=True, Scenarios:=True, UserinterfaceOnly:=True
End Sub
А так вернуть назад:
Код:
Public Sub www()
    Range("X7:X13,X15:X32,X34:X43").FormulaR1C1 = Replace(Range("X7").FormulaR1C1, "+RC[-4]", "")
End Sub
После того как копку нажимаешь добавить... добавляются 4 столбца и итог сдвигается на эти 4 столбца в право соответственно уже Range("X7:X13,X15:X32,X34:X43").For mulaR1C1 = Replace(Range("X7").FormulaR1C1, "+RC[-4]", "") не катит потому что ячейки не те.
яж поэтому и пишу перед каждым пребовлением вот это:
Cells(7, s + 5).Select
ActiveCell.FormulaR1C1 = ActiveCell.FormulaR1C1 + "+SUM(RC[-4])"

Жесть. А если б ячеек были тысячи? - Да согласен это не совсем правильно и долго ... ждешь пока все это выполнится но все же работает и ладно. Прайс менятсья ни когда не будет поэтому пофиг.

Но все же как разобраться с удалением не все ни как не получается! ( парни очень прошу понажимайте добавить что бы понять в чем смысл! а удаление я сделал форму там вводишь номер прихода он его ищет и удаляет потом обновляет порядочность номеров и вот тут запара правильно обновить формулы в итоге...

Последний раз редактировалось Sanka_i; 20.03.2012 в 14:11.
Sanka_i вне форума Ответить с цитированием
Старый 20.03.2012, 14:13   #10
DiemonStar
Старожил
 
Регистрация: 08.02.2012
Сообщений: 2,173
По умолчанию

посмотри, я там сделал тебе итоги... тока из макроса сам убери изменение формул...
Вложения
Тип файла: rar Копия .rar (40.9 Кб, 9 просмотров)
Правильно поставленная задача - три четверти решения.
DiemonStar вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как редактировать даные в базе HITBOY БД в Delphi 2 27.02.2012 07:09
Как редактировать видео? jetyb C# (си шарп) 1 12.07.2011 17:11
как редактировать и просмотреть таблицу MixanMM БД в Delphi 5 05.05.2010 16:14
Как правильно редактировать? AK BULLETS Общие вопросы Delphi 1 22.03.2010 18:41
Как редактировать видео? Николай11 Софт 1 10.09.2009 14:18