Транспонирование и форматирование данных в VBA, нужна помощь, чтобы убедиться, что мои данные редактируются на правильном листе - PullRequest
0 голосов
/ 17 марта 2020

Это должно быть легко решаемой проблемой, но я очень незнаком с VBA, поэтому мне нужна помощь.

По сути, я хочу скопировать данные, данные мне (конечный диапазон столбцов, но динамический * 1005) * строк), и вставьте его во второй лист в Excel. Оттуда мне нужно преобразовать все значения в столбцах D, E, F и H в дроби из 12. Я почти уверен, что я нахожусь на 99% пути, но последний шаг (преобразование в текст дроби ) выполняется не в том листе. Я пытался использовать функцию .Activate, а также установить правильный лист, но ни одна из них не работает. Там должно быть легко исправить это, что я скучаю. Примечание: это мой первый код в VBA, поэтому будьте спокойны за меня. Код ниже:

Option Explicit

Sub FormatData()

Dim ws As Worksheet

' create a new worksheet, and name it "Master"
Set ws = ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Worksheets(1))
ws.Name = "Master"

' copy the UsedRange and Transpose
Worksheets("Sheet1").UsedRange.Copy
ws.Range("A1").PasteSpecial xlPasteAll, Transpose:=True

Sheets("Master").Activate

Dim i As Long, N As Long, j As Long
N = Cells(Rows.Count, "D").End(xlUp).Row
j = 2
For i = 2 To N
    Cells(i, "D") = WorksheetFunction.Text(Cells(i, "D"), "0 0/12")
    j = j + 1
    Next i
j = 2
For i = 2 To N
    Cells(i, "E") = WorksheetFunction.Text(Cells(i, "E"), "0 0/12")
    j = j + 1
    Next i
j = 2
For i = 2 To N
    Cells(i, "F") = WorksheetFunction.Text(Cells(i, "F"), "0 0/12")
    j = j + 1
    Next i
j = 2
For i = 2 To N
    Cells(i, "H") = WorksheetFunction.Text(Cells(i, "H"), "0 0/12")
    j = j + 1
    Next i

End Sub

1 Ответ

0 голосов
/ 17 марта 2020

сначала сделайте только один l oop и сделайте все четыре преобразования внутри этого l oop. Во-вторых, j ничего не делает, вы можете опустить это.

Sub FormatData()

    Dim ws As Worksheet

    ' create a new worksheet, and name it "Master"
    Set ws = ThisWorkbook.Worksheets.Add(after:=ThisWorkbook.Worksheets(1))


    With ws
        .Name = "Master"

        ' copy the UsedRange and Transpose
        Worksheets("Sheet1").UsedRange.Copy
        .Range("A1").PasteSpecial xlPasteAll, Transpose:=True

        Dim i As Long, N As Long
        N = .Cells(.Rows.Count, "D").End(xlUp).Row

        For i = 2 To N
            .Cells(i, "D") = Application.WorksheetFunction.Text(.Cells(i, "D"), "# ??/12")
            .Cells(i, "E") = Application.WorksheetFunction.Text(.Cells(i, "E"), "# ??/12")
            .Cells(i, "F") = Application.WorksheetFunction.Text(.Cells(i, "F"), "# ??/12")
            .Cells(i, "H") = Application.WorksheetFunction.Text(.Cells(i, "H"), "# ??/12")
        Next i
    End With

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