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

Вход

Регистрация

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

 

= Мир MS Excel/Вывести даты которых нет в списке - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывести даты которых нет в списке (Макросы/Sub)
Вывести даты которых нет в списке
PaLbI4 Дата: Вторник, 12.08.2014, 11:23 | Сообщение № 1
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
День добрый !
Помогите пожалуйста написать цикл который будет просматривать даты для значения (в поле А) и выводить недостающие даты (которые между ними) таблица упорядочена по столбцам А и B
К сообщению приложен файл: 9664847.xlsx (8.9 Kb)
 
Ответить
СообщениеДень добрый !
Помогите пожалуйста написать цикл который будет просматривать даты для значения (в поле А) и выводить недостающие даты (которые между ними) таблица упорядочена по столбцам А и B

Автор - PaLbI4
Дата добавления - 12.08.2014 в 11:23
SkyPro Дата: Вторник, 12.08.2014, 12:25 | Сообщение № 2
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
[vba]
Код
Sub даты()
Dim x, i&, v&, startDate, stopDate, resAr(1 To 10000, 1 To 1), dateRa As Range

Set dateRa = Range("B2:B" & [b65535].End(xlUp).Row)
      startDate = Application.WorksheetFunction.Min(dateRa)
      stopDate = Application.WorksheetFunction.Max(dateRa)

x = dateRa.Value

For i = 1 To stopDate - startDate
Point = False
      For v = 1 To UBound(x)
          If x(v, 1) = startDate + i Then Point = True
      Next
      If Point = False Then
          r = r + 1
          resAr(r, 1) = startDate + i
      End If
Next

[h2].Resize(r) = resAr

End Sub
[/vba]


skypro1111@gmail.com

Сообщение отредактировал SkyPro - Вторник, 12.08.2014, 12:26
 
Ответить
Сообщение[vba]
Код
Sub даты()
Dim x, i&, v&, startDate, stopDate, resAr(1 To 10000, 1 To 1), dateRa As Range

Set dateRa = Range("B2:B" & [b65535].End(xlUp).Row)
      startDate = Application.WorksheetFunction.Min(dateRa)
      stopDate = Application.WorksheetFunction.Max(dateRa)

x = dateRa.Value

For i = 1 To stopDate - startDate
Point = False
      For v = 1 To UBound(x)
          If x(v, 1) = startDate + i Then Point = True
      Next
      If Point = False Then
          r = r + 1
          resAr(r, 1) = startDate + i
      End If
Next

[h2].Resize(r) = resAr

End Sub
[/vba]

Автор - SkyPro
Дата добавления - 12.08.2014 в 12:25
PaLbI4 Дата: Вторник, 12.08.2014, 12:40 | Сообщение № 3
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Спасибо! Все хорошо вытаскивает даты , а где бы здесь добавить что бы была привязка к значению , т.е. в поле H выаодилось не только дата которой нет , а еще в поле G номер из поля А например 1 или 2
 
Ответить
СообщениеСпасибо! Все хорошо вытаскивает даты , а где бы здесь добавить что бы была привязка к значению , т.е. в поле H выаодилось не только дата которой нет , а еще в поле G номер из поля А например 1 или 2

Автор - PaLbI4
Дата добавления - 12.08.2014 в 12:40
PaLbI4 Дата: Вторник, 12.08.2014, 12:43 | Сообщение № 4
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Хотелось бы добавить группировку по полю A, потому что если добавить например строку значение 2 и дата 03.01.2014 то выведет только 07.01.2014
 
Ответить
СообщениеХотелось бы добавить группировку по полю A, потому что если добавить например строку значение 2 и дата 03.01.2014 то выведет только 07.01.2014

Автор - PaLbI4
Дата добавления - 12.08.2014 в 12:43
SkyPro Дата: Вторник, 12.08.2014, 12:44 | Сообщение № 5
Группа: Друзья
Ранг: Старожил
Сообщений: 1206
Репутация: 255 ±
Замечаний: 0% ±

2010
И как это "1 или 2" привязать к дате, которой в этом списке нет?


skypro1111@gmail.com
 
Ответить
СообщениеИ как это "1 или 2" привязать к дате, которой в этом списке нет?

Автор - SkyPro
Дата добавления - 12.08.2014 в 12:44
PaLbI4 Дата: Вторник, 12.08.2014, 12:51 | Сообщение № 6
Группа: Пользователи
Ранг: Новичок
Сообщений: 25
Репутация: 0 ±
Замечаний: 0% ±

Excel 2010
Вот допустим есть два магазина под номерами 123 и 236
магазин 123 работал с 01.01.2014 по 06.01.2014 нужно вывести что 123 не работал 03.01.2014,
он может не работать и 2 дня и 3 и 4
так же магазин 236 у которого тоже надо узнать в какие даты он не работал между его минимальной и максимальной датой
К сообщению приложен файл: 0025998.xlsx (8.9 Kb)
 
Ответить
СообщениеВот допустим есть два магазина под номерами 123 и 236
магазин 123 работал с 01.01.2014 по 06.01.2014 нужно вывести что 123 не работал 03.01.2014,
он может не работать и 2 дня и 3 и 4
так же магазин 236 у которого тоже надо узнать в какие даты он не работал между его минимальной и максимальной датой

Автор - PaLbI4
Дата добавления - 12.08.2014 в 12:51
Michael_S Дата: Вторник, 12.08.2014, 13:22 | Сообщение № 7
Группа: Друзья
Ранг: Старожил
Сообщений: 2012
Репутация: 373 ±
Замечаний: 0% ±

Excel2016
Как-то так:
К сообщению приложен файл: PaLbI4.xlsm (16.7 Kb)


Сообщение отредактировал Michael_S - Вторник, 12.08.2014, 13:23
 
Ответить
СообщениеКак-то так:

Автор - Michael_S
Дата добавления - 12.08.2014 в 13:22
_Boroda_ Дата: Вторник, 12.08.2014, 13:37 | Сообщение № 8
Группа: Модераторы
Ранг: Местный житель
Сообщений: 16666
Репутация: 6478 ±
Замечаний: 0% ±

2003; 2007; 2010; 2013 RUS
Ну и такой совсем простенький вариант
[vba]
Код
Sub tt()
     Application.ScreenUpdating = 0
     Range("G:H").ClearContents
     r1_ = Range("A" & Rows.Count).End(xlUp).Row
     f_ = 1
     For i = 2 To r1_
         n_ = WorksheetFunction.CountIf(Range("A2:A" & r1_), Range("A" & i))
         r01_ = Range("A" & i + n_ - 1).Row
         k00_ = --Format(--Range("B" & i), "0")
         k01_ = --Format(--Range("B" & r01_), "0")
         z0_ = Range("A" & k00_).Row
         z1_ = Range("A" & k01_).Row
         For j = z0_ To z1_
             On Error Resume Next
             ggg = WorksheetFunction.Match(j, Range("B" & i & ":B" & i + n_ - 1), 0)
             If Err.Number Then
                 f_ = f_ + 1
                 Range("G" & f_) = Range("A" & i)
                 Range("H" & f_) = Format(j, "DD.MM.YYYY")
             End If
             On Error GoTo 0
         Next j
         i = i + n_ - 1
     Next i
     Application.ScreenUpdating = 1
End Sub
[/vba]
К сообщению приложен файл: 9664847_1.xlsm (15.4 Kb)


Скажи мне, кудесник, любимец ба’гов...
Платная помощь:
Boroda_Excel@mail.ru
Яндекс-деньги: 41001632713405 | Webmoney: R289877159277; Z102172301748; E177867141995
 
Ответить
СообщениеНу и такой совсем простенький вариант
[vba]
Код
Sub tt()
     Application.ScreenUpdating = 0
     Range("G:H").ClearContents
     r1_ = Range("A" & Rows.Count).End(xlUp).Row
     f_ = 1
     For i = 2 To r1_
         n_ = WorksheetFunction.CountIf(Range("A2:A" & r1_), Range("A" & i))
         r01_ = Range("A" & i + n_ - 1).Row
         k00_ = --Format(--Range("B" & i), "0")
         k01_ = --Format(--Range("B" & r01_), "0")
         z0_ = Range("A" & k00_).Row
         z1_ = Range("A" & k01_).Row
         For j = z0_ To z1_
             On Error Resume Next
             ggg = WorksheetFunction.Match(j, Range("B" & i & ":B" & i + n_ - 1), 0)
             If Err.Number Then
                 f_ = f_ + 1
                 Range("G" & f_) = Range("A" & i)
                 Range("H" & f_) = Format(j, "DD.MM.YYYY")
             End If
             On Error GoTo 0
         Next j
         i = i + n_ - 1
     Next i
     Application.ScreenUpdating = 1
End Sub
[/vba]

Автор - _Boroda_
Дата добавления - 12.08.2014 в 13:37
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Вывести даты которых нет в списке (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

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