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

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

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

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 05.06.2025, 20:40   #1
Dementr
Новичок
Джуниор
 
Регистрация: 05.06.2025
Сообщений: 3
По умолчанию Вычитание из массива ячеек

Народ, доброго времени суток.
Помогите, пожалуйста. Есть массив цифр из которого нужно вычесть число. Результат должен выглядеть как соразмерный массив, вычитание нужно вычислять из последней ячейки до нуля, если вычитаемое больше, то остальное вычитается из следующей ячейки и т.д.
Вложения
Тип файла: xlsx Пример.xlsx (13.1 Кб, 2 просмотров)
Dementr вне форума Ответить с цитированием
Старый 06.06.2025, 00:16   #2
Valick
Форумчанин
 
Регистрация: 27.04.2022
Сообщений: 515
По умолчанию

На заре на столе
Разноцветны стёклышки
Разноцветны тряпочки-
Непонятно ни хрена
Valick вне форума Ответить с цитированием
Старый 06.06.2025, 05:40   #3
Dementr
Новичок
Джуниор
 
Регистрация: 05.06.2025
Сообщений: 3
По умолчанию

Пример приложил. Еще раз попробую:
Первый - Три ячейки 12, 22, 42. Вычитаемое 50. В результате должно получится 12, 14, 0.
Второй - Три ячейки 12, 22, 42. Вычитаемое 100. В результате должно получится 0, 0, 0.
Третий - Три ячейки 12, 22, 42. Вычитаемое 10. В результате должно получится 12, 22, 32.
Начинать вычитание нужно с крайней правой ячейки до нуля, если вычитаемое число больше значения в ячейке, то остаток вычесть из следующей ячейки и т.д.
Как-то так.
Надеюсь, что понятно.
Dementr вне форума Ответить с цитированием
Старый 06.06.2025, 11:03   #4
Elixi
Форумчанин
 
Регистрация: 10.05.2019
Сообщений: 172
По умолчанию

Dementr, похоже математики вам предложат более красивый пример
Код:
Sub Test()
    Dim M, V, i
    
    M = Array(1, 12, 10, 10, 10, 10, 0, 10, 3, 10, 10, 10, 10)
    V = 56
'    M = Array(12, 22, 42)
'    V = 100
'    V = 50
    
    For i = LBound(M) To UBound(M)
        Debug.Print M(i),
    Next
    Debug.Print
    
    For i = UBound(M) To LBound(M) Step -1
        Select Case True
        Case V > M(i)
            V = V - M(i)
            M(i) = 0
        Case V = M(i)
            V = 0
            M(i) = 0
        Case V < M(i)
            M(i) = M(i) - V
            V = 0
        End Select
    Next
    

    For i = LBound(M) To UBound(M)
        Debug.Print M(i),
    Next
    Debug.Print
End Sub
Elixi вне форума Ответить с цитированием
Старый Вчера, 11:18   #5
Dementr
Новичок
Джуниор
 
Регистрация: 05.06.2025
Сообщений: 3
По умолчанию

Спасибо тебе, добрый человек!
Немного допилил под свои таблички и все отлично работает.
Dementr вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Количество ячеек массива KAMLS Общие вопросы C/C++ 5 15.06.2018 12:48
Вычитание дат.... prizrak1390 PHP 7 24.09.2015 22:51
Ступенчатая Выборка из массива и преобразование ячеек в строку Kiralucky Microsoft Office Excel 0 30.01.2012 13:30
Заполнение массива из ячеек рабочего листа ofenod Microsoft Office Excel 2 29.04.2011 01:33
Обработка массива ячеек в памяти Alex Pancho Microsoft Office Excel 4 30.05.2009 20:21