День добрый ! Помогите пожалуйста написать цикл который будет просматривать даты для значения (в поле А) и выводить недостающие даты (которые между ними) таблица упорядочена по столбцам А и B
День добрый ! Помогите пожалуйста написать цикл который будет просматривать даты для значения (в поле А) и выводить недостающие даты (которые между ними) таблица упорядочена по столбцам А и BPaLbI4
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]
[vba]
Код
Sub даты() Dim x, i&, v&, startDate, stopDate, resAr(1 To 10000, 1 To 1), dateRa As Range
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
Спасибо! Все хорошо вытаскивает даты , а где бы здесь добавить что бы была привязка к значению , т.е. в поле H выаодилось не только дата которой нет , а еще в поле G номер из поля А например 1 или 2
Спасибо! Все хорошо вытаскивает даты , а где бы здесь добавить что бы была привязка к значению , т.е. в поле H выаодилось не только дата которой нет , а еще в поле G номер из поля А например 1 или 2PaLbI4
Вот допустим есть два магазина под номерами 123 и 236 магазин 123 работал с 01.01.2014 по 06.01.2014 нужно вывести что 123 не работал 03.01.2014, он может не работать и 2 дня и 3 и 4 так же магазин 236 у которого тоже надо узнать в какие даты он не работал между его минимальной и максимальной датой
Вот допустим есть два магазина под номерами 123 и 236 магазин 123 работал с 01.01.2014 по 06.01.2014 нужно вывести что 123 не работал 03.01.2014, он может не работать и 2 дня и 3 и 4 так же магазин 236 у которого тоже надо узнать в какие даты он не работал между его минимальной и максимальной датойPaLbI4
Sub PaLbI4() Dim Arr(), i&, k&, ak, aI, aR, ar1&(), Rez(1000, 1), j&, n Dim Mass: Set Mass = CreateObject("scripting.dictionary") Arr = Range("A1").CurrentRegion.Value With Mass For i = 2 To UBound(Arr) .Item(Arr(i, 1)) = .Item(Arr(i, 1)) & Arr(i, 2) & " " Next ak = .keys: aI = .items .RemoveAll For i = 0 To UBound(ak) aR = Split(aI(i)) ReDim ar1(UBound(aR) - 1) For k = 0 To UBound(ar1) ar1(k) = DateValue(aR(k)) Next For k = WorksheetFunction.Min(ar1) To WorksheetFunction.Max(ar1) .Item(Format(k, "DD.MM.YYYY")) = "" Next For k = 0 To UBound(aR) - 1 .Remove (aR(k)) Next If .Count Then n = .keys End If For k = 0 To UBound(n) Rez(j, 0) = ak(i) Rez(j, 1) = n(k) j = j + 1 Next .RemoveAll Next End With Range("J2").Resize(j, 2) = Rez End Sub
[/vba]
Как-то так:
[vba]
Код
Sub PaLbI4() Dim Arr(), i&, k&, ak, aI, aR, ar1&(), Rez(1000, 1), j&, n Dim Mass: Set Mass = CreateObject("scripting.dictionary") Arr = Range("A1").CurrentRegion.Value With Mass For i = 2 To UBound(Arr) .Item(Arr(i, 1)) = .Item(Arr(i, 1)) & Arr(i, 2) & " " Next ak = .keys: aI = .items .RemoveAll For i = 0 To UBound(ak) aR = Split(aI(i)) ReDim ar1(UBound(aR) - 1) For k = 0 To UBound(ar1) ar1(k) = DateValue(aR(k)) Next For k = WorksheetFunction.Min(ar1) To WorksheetFunction.Max(ar1) .Item(Format(k, "DD.MM.YYYY")) = "" Next For k = 0 To UBound(aR) - 1 .Remove (aR(k)) Next If .Count Then n = .keys End If For k = 0 To UBound(n) Rez(j, 0) = ak(i) Rez(j, 1) = n(k) j = j + 1 Next .RemoveAll Next End With Range("J2").Resize(j, 2) = Rez End Sub