Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Отображение последнего значения с условием - Мир MS Excel

Регистрация · Логин: · Пароль: · · Забыли пароль?
  • Страница 1 из 1
  • 1
Модератор форума: _Boroda_, Manyasha, SLAVICK, китин  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отображение последнего значения с условием (Макросы/Sub)
Отображение последнего значения с условием
AVI Дата: Вторник, 21.08.2018, 10:58 | Сообщение № 1
Группа: Проверенные
Ранг: Обитатель
Сообщений: 453
Репутация: 7 ±
Замечаний: 0% ±

Excel 2016
Я попытался модифицировать то, что у меня есть, но вылезает ошибка [vba]
Код
If ar(i - 1, 2) = ar(i, 2) Then
[/vba], очевидно, я не правильно определяю как сам диапазон для поиска, так и сам аргумент поиска, и мой "арсенал" знаний не дает мне возможность решить проблему
Смысл самой процедуры. В каждой строке по порядку ищется сочетание "Наименование" + "Место" в ПРЕДЫДУЩИХ строках таблицы и, отображается ПОСЛЕДНЕЕ значение из столбца "Остаток" и так для всего столбца "остаток" умной таблицы.
Так как столбцы "Остаток" и "Остаток на складе" друг от друга зависят, то я планировал сделать, что бы в столбец "Остаток" вносилась формула. Потом запускалась процедура, а после завершения процедуры формулы в столбце "остаток" менялись на значения.
К сообщению приложен файл: 5758301.xlsm(27.7 Kb)
 
Ответить
СообщениеЯ попытался модифицировать то, что у меня есть, но вылезает ошибка [vba]
Код
If ar(i - 1, 2) = ar(i, 2) Then
[/vba], очевидно, я не правильно определяю как сам диапазон для поиска, так и сам аргумент поиска, и мой "арсенал" знаний не дает мне возможность решить проблему
Смысл самой процедуры. В каждой строке по порядку ищется сочетание "Наименование" + "Место" в ПРЕДЫДУЩИХ строках таблицы и, отображается ПОСЛЕДНЕЕ значение из столбца "Остаток" и так для всего столбца "остаток" умной таблицы.
Так как столбцы "Остаток" и "Остаток на складе" друг от друга зависят, то я планировал сделать, что бы в столбец "Остаток" вносилась формула. Потом запускалась процедура, а после завершения процедуры формулы в столбце "остаток" менялись на значения.

Автор - AVI
Дата добавления - 21.08.2018 в 10:58
_Boroda_ Дата: Вторник, 21.08.2018, 11:32 | Сообщение № 2
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13509
Репутация: 5528 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Так нужно?
[vba]
Код
Sub eeee()
    Dim ar, i, j
    ar = Range("Главная_tb") 'таблицу в массив
    For i = 1 To UBound(ar) 'цакл с первой по последнюю
        If i > 1 Then 'для строк, начиная со второй
            For j = i - 1 To 1 Step -1 'цикл от предыдущей до первой
                If ar(i, 2) = ar(j, 2) Then 'если i-ая равна j-ой наименование
                    If ar(i, 4) = ar(j, 4) Then 'если i-ая равна j-ой место
                        ar(i, 10) = ar(j, 13) 'остаток на складе i равен остатку j
                        Exit For 'выход из цикла по j
                    End If
                End If
            Next j
        End If
        ar(i, 13) = ar(i, 10) + ar(i, 11) - ar(i, 12) 'расчет остатка по i
    Next i
    Range("Главная_tb") = ar 'массив в таблицу
End Sub
[/vba]
К сообщению приложен файл: 5758301_1.xlsm(26.7 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеТак нужно?
[vba]
Код
Sub eeee()
    Dim ar, i, j
    ar = Range("Главная_tb") 'таблицу в массив
    For i = 1 To UBound(ar) 'цакл с первой по последнюю
        If i > 1 Then 'для строк, начиная со второй
            For j = i - 1 To 1 Step -1 'цикл от предыдущей до первой
                If ar(i, 2) = ar(j, 2) Then 'если i-ая равна j-ой наименование
                    If ar(i, 4) = ar(j, 4) Then 'если i-ая равна j-ой место
                        ar(i, 10) = ar(j, 13) 'остаток на складе i равен остатку j
                        Exit For 'выход из цикла по j
                    End If
                End If
            Next j
        End If
        ar(i, 13) = ar(i, 10) + ar(i, 11) - ar(i, 12) 'расчет остатка по i
    Next i
    Range("Главная_tb") = ar 'массив в таблицу
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 21.08.2018 в 11:32
AVI Дата: Вторник, 21.08.2018, 17:05 | Сообщение № 3
Группа: Проверенные
Ранг: Обитатель
Сообщений: 453
Репутация: 7 ±
Замечаний: 0% ±

Excel 2016
_Boroda_, Забыл... Еще параллельно проверка идет. Если "Наименование" и "Место" встречается первый раз, то записывается ноль.


Сообщение отредактировал AVI - Вторник, 21.08.2018, 17:07
 
Ответить
Сообщение_Boroda_, Забыл... Еще параллельно проверка идет. Если "Наименование" и "Место" встречается первый раз, то записывается ноль.

Автор - AVI
Дата добавления - 21.08.2018 в 17:05
_Boroda_ Дата: Вторник, 21.08.2018, 17:10 | Сообщение № 4
Группа: Модераторы
Ранг: Местный житель
Сообщений: 13509
Репутация: 5528 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
[vba]
Код
Sub eeee()
    Dim ar, i, j
    ar = Range("Главная_tb") 'таблицу в массив
    For i = 1 To UBound(ar) 'цакл с первой по последнюю
        ar(i, 10) = 0
        If i > 1 Then 'для строк, начиная со второй
            For j = i - 1 To 1 Step -1 'цикл от предыдущей до первой
                If ar(i, 2) = ar(j, 2) Then 'если i-ая равна j-ой наименование
                    If ar(i, 4) = ar(j, 4) Then 'если i-ая равна j-ой место
                        ar(i, 10) = ar(j, 13) 'остаток на складе i равен остатку j
                        Exit For 'выход из цикла по j
                    End If
                End If
            Next j
        End If
        ar(i, 13) = ar(i, 10) + ar(i, 11) - ar(i, 12) 'расчет остатка по i
    Next i
    Range("Главная_tb") = ar 'массив в таблицу
End Sub
[/vba]


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
Сообщение[vba]
Код
Sub eeee()
    Dim ar, i, j
    ar = Range("Главная_tb") 'таблицу в массив
    For i = 1 To UBound(ar) 'цакл с первой по последнюю
        ar(i, 10) = 0
        If i > 1 Then 'для строк, начиная со второй
            For j = i - 1 To 1 Step -1 'цикл от предыдущей до первой
                If ar(i, 2) = ar(j, 2) Then 'если i-ая равна j-ой наименование
                    If ar(i, 4) = ar(j, 4) Then 'если i-ая равна j-ой место
                        ar(i, 10) = ar(j, 13) 'остаток на складе i равен остатку j
                        Exit For 'выход из цикла по j
                    End If
                End If
            Next j
        End If
        ar(i, 13) = ar(i, 10) + ar(i, 11) - ar(i, 12) 'расчет остатка по i
    Next i
    Range("Главная_tb") = ar 'массив в таблицу
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 21.08.2018 в 17:10
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Отображение последнего значения с условием (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс цитирования
© 2010-2018 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!