Страницы: 1
RSS
Название месяца при фильтрации
 
Добрый день!
Подскажите, пожалуйста, имею таблицу, ежемесячно делаю по ней отчет. Посоветуйте как через VBA правильно будет оставить только отчетный месяц.
Хочу через inputbox указывать месяц и чтобы все строки с другими месяцами удалялись. И причем месяц оставался только того года, который сейчас на дворе, т.к. таблица за много лет ведется.
Пока только догадался прописывать каждый день отдельно :) типа 01.01.2018 = январь, 01.02.2018 = февраль и т.д., но это бред какой-то, придется 365 строк таких для каждого года делать.
В фильтре в таблице дни как рак таки группируются по месяцам, это же можно как-то использовать)
Помощь нужна только с тем, чтобы Excel понимал, что если я ввожу Ноябрь, то имеются ввиду строки 01.11.2018, 02.11.2018 и т.д., как удалить потом все, это понятно))

Спасибо.
Изменено: whateverlover - 25.11.2018 15:02:28
 
Цитата
whateverlover написал:
через inputbox указывать месяц
Это плохая идея, которая превратит всё в тыкву при опечатке, например, "янвфрь". Должен быть выбор из комбобокса. Далее всё просто - берёте переменную например, Mnth и присваиваете ей значение:
Код
Mnth=ComboBox1.ListIndex+1
и сравниваете полученное с Month(CDate(Дата)), где Дата - это она самая.
 
что значит оставить? Удалить или оставить видимым?
По вопросам из тем форума, личку не читаю.
 
StoTisteg, буду пробовать) пока не очень понятно
БМВ, значит удалить все остальные месяца, оставив только строки с необходимым месяцем
 
Можно запросить месяц и через InputBox с низкой вероятностью случайной ошибки:
Код
' Возвращает номер месяца или 0 при отказе пользователя от ввода
Function GetMonth() As Long
  Dim v As String, t As String, s As String, i As Long
  t = "Введите номер месяца (от 1 до 12):"
  For i = 1 To 12
    t = t & vbLf & Format(DateSerial(0, i, 1), "M MMMM")
    s = s & " " & i
  Next i
  While True
    v = InputBox(t)
    If v = "" Then Exit Function
    If InStr(1, s & " ", " " & v & " ") > 0 Then
      GetMonth = CLng(v)
      Exit Function
    End If
  Wend
End Function

Sub test()
  MsgBox GetMonth()
End Sub
Владимир
 
sokol92, огромное спасибо, Владимир :)
 
Успехов!
Владимир
 
Вариант без макроса - штатный режим "Промежуточный итог" - Итог: Month.
См. файл - whateverlover.xlsx.
Изменено: Мотя - 26.11.2018 18:23:04
Страницы: 1
Наверх