Фильтрация между двумя датами в сводной таблице с помощью 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). Смешно!



Вот как я обошел это:



У меня было еще две ячейки, смотревшие на эти две ячейки в числовом формате, и вместо этого я направил код на эти две ячейки. Не уверен насчет любого из вас, но я бы изо всех сил пытался преобразовать любую дату в цифру в моей голове...!



Если у вас есть упрощенное решение и / или объяснение этого полного безумия я был бы очень обязан!

677   1  

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

    Ничего не найдено.