Фильтрация между двумя датами в сводной таблице с помощью VBA. Великобритания-США формат даты выпуска
Я нашел обходной путь для этого, но если у кого-то есть более чистый способ сделать это, я был бы заинтересован/благодарен.
У меня есть два поля в электронной таблице, называемые DateFrom и DateTo для использования с фильтром дат в сводной таблице. Оба находятся в формате ДД / ММ / гггг. Данные, подаваемые в таблицу, также имеют этот формат. Сводная таблица также возвращает даты в том же формате. Все мои настройки находятся на английском языке, и я попробовал это на отдельной машине с теми же результатами.
I затем используйте следующий код для ввода в сводную таблицу:
ActiveSheet.PivotTables("Pivot").PivotFields("Date").PivotFilters. _
Add Type:=xlDateBetween, Value1:=Range("DateFrom").Value, Value2:=Range("DateTo").Value
Код считывает две ячейки как строку и затем применяет это к сводной таблице, как если бы они были форматом US (MM/DD/YYYY). Смешно!
Вот как я обошел это:
У меня было еще две ячейки, смотревшие на эти две ячейки в числовом формате, и вместо этого я направил код на эти две ячейки. Не уверен насчет любого из вас, но я бы изо всех сил пытался преобразовать любую дату в цифру в моей голове...!
Если у вас есть упрощенное решение и / или объяснение этого полного безумия я был бы очень обязан!
1 ответ:
Действительно, это странно. Я воспроизвел вашу проблему с Excel 2007 и немецкими языковыми настройками.
Однако при преобразовании значений дат в
Longs с помощьюCLngвсе работает:ActiveSheet.PivotTables("Pivot").PivotFields("Date").PivotFilters. _ Add Type:=xlDateBetween, Value1:=CLng(Range("DateFrom").Value), Value2:=CLng(Range("DateTo").Value)
Comments