VBA - формат запятой / точки (США> ЕС (немецкий)) - PullRequest
0 голосов
/ 27 октября 2019

Получил фрагмент кода, где есть некоторые параметры, которые я хочу иметь с (,) вместо (.) Что делает мой код, беря некоторые системные файлы (.dif) и конвертируя их в .txt, но тамМне удалось преобразовать Column A в определенный формат даты (вместо формата США), но проблема в других столбцах. Column M до Column T - «Температуры», и формат США - с (.), Поэтому у вас есть, например, 25,5 C или немецкий (ЕС) - с (,) 25,5 C.

psТемпературы помечены T11, T21, T31 и т. Д. *

Я хотел преобразовать их все в запятую, а я не управляю с помощью .NumberFormat и не изменяю в Excel> Advanced> разделитель 1000options.

Я получаю файл .txt, но с неподвижным (.), и это всегда делает ненужными проблемы при импорте его в Power Query / BI> приходится всегда удалять предыдущий шаг (не многим знакомос PBI и Editor, и когда вы говорите кому-то, чтобы позаботиться об этом ... люди легко забывают, потому что у вас есть много шагов, чтобы сделать ..)

Это часть кода:

Sub DoFolder(Folder, targetFolder As String)
Dim Workbook
Dim SubFolder

For Each SubFolder In Folder.SubFolders
        DoFolder SubFolder, targetFolder
Next
Dim File
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
For Each File In Folder.Files

    ' *** Operate on each file ***
    Set Workbook = Workbooks.Open(File)

    ' *** Sort, filter and rename each file/column ***
    If Workbook.FileFormat = -4158 Then
        Set Workbook = Workbook.ActiveSheet
            'Workbook.Columns("D:E").EntireColumn.Delete
            'Workbook.Columns("E").EntireColumn.Delete
            'Workbook.Columns("R:T").EntireColumn.Delete
            Workbook.Rows("1").Delete

            Range("A1:W1").Value = Array("Date/Time", "P0 [mbar]", "P1 [mbar]", "P3 [mbar]", "P7 [mbar]", "PS160 [mbar]", "P190 [mbar]", "P220 [mbar]", _
            "Q1 [ppb]", "Q2 [ppb]", "Q3 [ppb]", "Q4 [ppb]", _
            "T11 [°C]", "T21 [°C]", "T31 [°C]", "T12 [°C]", "T22 [°C]", "T32 [°C]", "T01 [°C]", "T02 [°C]", "FM1 [slm]", "FM2 [slm]", "FM3 [slm]")

            Workbook.Columns("A").NumberFormat = "dd.mm.yyyy hh:mm"
            'Workbook.Columns("M").NumberFormat = "#.###"
            'Workbook.Columns("N").NumberFormat = "#.###"
            'Workbook.Columns("O").NumberFormat = "#.###"
            'Workbook.Columns("P").NumberFormat = "#.###"
            'Workbook.Columns("Q").NumberFormat = "#.###"
            'Workbook.Columns("R").NumberFormat = "#.###"
            'Workbook.Columns("S").NumberFormat = "#.###"
            'Workbook.Columns("T").NumberFormat = "#.###"


    ' *** Preparing new folder for filtered/sorted files ***
        Dim FLDR_NAME As String
        FLDR_NAME = Mid(Application.ActiveWorkbook.Path, InStrRev(Application.ActiveWorkbook.Path, "\") + 1)
        Dim fso As Object
        Set fso = CreateObject("Scripting.FileSystemObject")

        FLDR_NAME = targetFolder & "\" & FLDR_NAME
        If Not fso.FolderExists(targetFolder) Then
               fso.CreateFolder (targetFolder)
        End If

        If Not fso.FolderExists(FLDR_NAME) Then
               fso.CreateFolder (FLDR_NAME)
        End If

    ' *** Save As Converter_Converted as separate file ***
        Dim newFileName As String
        newFileName = FLDR_NAME & "\" & Workbook.Name & ".txt"
        Application.DisplayAlerts = False
        Workbook.SaveAs FileName:=newFileName

    ' *** Close and SaveAs ***
        Application.ActiveWorkbook.Close
    End If
Next
Application.ScreenUpdating = True
Application.Calculation = xlCalculationAutomatic

End Sub

After converting with VBA

PowerBI (Editor)

Это в редакторе PBI - тип с автоматическим изменением, чего я не хочу каждый разиметь.

As it should be!

На последнем изображении из PBI, это на самом деле то, что я хотел, но без дальнейших шагов по замене значений и изменению значений.

Ответы [ 2 ]

1 голос
/ 28 октября 2019

Если в настройках региональной системы Windows используется запятая для десятичного разделителя, и если вы хотите преобразовать десятичные числа, ориентированные на США, в свою систему, то вам следует использовать Изменить тип с помощью локали и укажите английский (США) en-US в качестве локали.

0 голосов
/ 06 ноября 2019

Итак, я наконец-то кое-что узнал (по крайней мере, для меня это адская помощь)!

Я играю в PowerQuery Editor, а также с этими форматами, региональными настройками и т. Д. ... самый быстрый и простой способ установить ваши данные в адекватном формате (в моем случае это сработало - жить вГермания), однажды, когда вы загрузили свои данные в редактор, просто зайдите в «Настройки»> «Региональные настройки» и «Локаль на английский (Великобритания)» и нажмите «ОБНОВИТЬ» в «Редакторе» - в моем случае это работает безупречно, я не могу понять, почему Германия 100%так как локаль не работает должным образом, но поместить другую локаль одним щелчком мыши лучше, чем «удалить шаги» и отформатировать все.

Что я хочу сказать, он распознает ваши данные, если ваш набор данных является однородным и без каких-либо расхождений ... и опять же, нет необходимости полностью менять региональные настройки на ПК, просто загрузите данныеи во время этого вы всегда можете изменить в редакторе все, что вам нужно.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...