Отключить нестандартное локальное форматирование в Excel - PullRequest
0 голосов
/ 26 февраля 2019

Я просто провожу день, чтобы понять, почему формула не работает так, как ожидалось.Я пытался создать таблицу данных из внешнего источника.

Сбор данных X = период (текст), Y = код (номер), Z = количество (курс) Первая строка = Y, Первый столбец =Y, data = Z Данные собираются по периоду и коду.Если код не найден в диапазоне, код будет добавлен в следующую доступную ячейку в первой строке.

Я хочу показать код в виде 3-значного формата, поэтому я отформатировал диапазон, имеякоды (VBA) .Numformat = "000" Я хочу отобразить коды в виде фиксированного кода из 3 цифр, поэтому я применил инструкцию VBA для форматирования диапазона до .NumberFormat = "000".При импорте новой строки данных проверяется, существует ли код в таблице.Если нет, код добавляется в следующую доступную пустую ячейку в первой строке.Для этой цели используется следующая функция:

Public Function SearchValCol(lngSearch) As Long

    'Search a a specific value in a column and return the column number if found.

    Dim Rng As Range
    With ws_per_tot.Range("1:1")
        Set Rng = .Find( _
            What:=lngSearch, _
            After:=.Cells(.Cells.Count), _
            LookIn:=xlValues, _
            Lookat:=xlWhole, _
            searchorder:=xlByColumns, _
            SearchDirection:=xlNext, _
            MatchCase:=False, _
            SearchFormat:=False)
    End With

    If Not Rng Is Nothing Then
        SearchValCol = Rng.Column
    End If

End Function

Теперь при форматировании ячеек «000» происходит нечто странное.Когда ячейка отформатирована как «стандартная», код найден, когда отформатирован как «000», это не так.Кроме того, если применяется формат «000», Excel показывает, что используется «специальное форматирование»

Chinese(Taiwan) format

Я прочитал, что существует проблема с поискомзначения в отформатированных ячейках и предположим, что это также вызвало мое раздражение сегодня.Я настоятельно предпочитаю отключить специальное локальное форматирование.Вероятность того, что я буду использовать их, составляет 0,0001%.У кого-нибудь есть идея?

Art.

1 Ответ

0 голосов
/ 26 февраля 2019

Это не очень хорошо задокументировано, но я наблюдал, что в отношении параметра LookIn, xlValues проверяет то, что отображается, тогда как xlFormulas проверяет содержимое панели формул.

Следовательно, если вы измените на LookIn:=xlFormulas, вы сможете выполнить .Find независимо от формата ячейки.

Я не знаю, почему ввод формата 000 вызываетдиалоговое окно «Формат ячейки» для выбора тайваньского специального формата.Я предполагаю, что это особый формат на Тайване.Кажется, что-то изменилось в Excel, возможно, ошибка, когда если вы введете количество цифр, соответствующее специальному формату в какой-то другой локали, диалоговое окно «Формат ячейки» переключится на это.

Я надеюсь, что ониисправит это.До тех пор, если это проблема, вы можете использовать региональный формат.Например, в США вы можете использовать [$-en-US]000 вместо простого 000.

...