Карта хеша должна быть намного быстрее. Вы не должны выбирать контейнер на основе того, как Вы хотите, чтобы объекты были расположены в конечном счете; Просто отсортируйте список (слово, частота) - пары в конце. Обычно будет меньше таких пар, которые будут отсортированы, чем слова в файлах, таким образом, асимптотических (и реальный), производительность с картой хеша будет лучше.
It's doing two things here which don't match your expectations, I think: Assuming you want the week with Jan 1 in as week 1, and using Sunday as first day of the week So it has week 1 running from Sunday 28th December 2008 to Saturday 3rd Jan 2009.
Week 6 would begin on Sunday 1st Feb by this method.
The ISO standard is for week 1 to be the one containing 4 days of January, or the first Thursday of the year (different ways of expressing the same thing). You can specify this method of calculation and the first day of the week:
Format(SomeDate,"ww",vbMonday,vbFirstFourDays)
see here for syntax:
https://support.office.com/en-US/article/Format-Function-6F29D87B-8761-408D-81D3-63B9CD842530
Это может сработать: Format (YourDate, "ww", vbMonday)
Независимо от дня недели, в который начинается ваша неделя, вам необходимо передать однозначные значения даты. «31.01.2009» может быть только одна дата (31 января), но «1/2/2009» может быть 2 января (стиль США) или 1 февраля (все остальные, у кого больше здравого смысла, чем у нас).
В этом случае, Я бы использовал DateSerial (), чтобы удостовериться, что дата не была неправильно истолкована:
Format(DateSerial(2009,2,1), "ww", vbMonday)
Хотя это не вызывает вашей проблемы, поскольку Access с пользой использует локализованные настройки даты вашей системы, я думаю, что вы все равно должны это сделать. Вы, безусловно, вынуждены делать это в SQL в Access, поэтому я не думаю, что это плохая привычка в коде и выражениях.
локализованные настройки даты, я думаю, вам все равно стоит это сделать. Вы, безусловно, вынуждены делать это в SQL в Access, поэтому я не думаю, что это плохая привычка в коде и выражениях. локализованные настройки даты, я думаю, вам все равно стоит это сделать. Вы, безусловно, вынуждены делать это в SQL в Access, поэтому я не думаю, что это плохая привычка в коде и выражениях.«Правильный результат» зависит от региона. Возможно, VBA позволит вам выбрать календарную систему, иначе вам не повезет.
Обратите внимание, что First-Day-On-xxDay - не единственная ваша проблема. Существует также различие в том, что такое полная неделя, поэтому Неделя 1 в одной системе может быть Неделей 53 предыдущего года в другой системе.
Так что проверьте тщательно и не поддавайтесь соблазну «исправить на 1».
If sunday is the first day of the week (as it is in some locales) then 6 is the correct weeknumber for "1/2/2009" (february 1. 2009)