Извлечение определенных данных из повторяющейся таблицы - PullRequest
0 голосов
/ 25 октября 2019

Тестовый экспорт, показывающий 2 точки выборки, полученные из программного обеспечения У меня есть данные из более чем 100 точек выборки, экспортированных в Excel. Я хочу вытащить конкретные данные из них в сводную таблицу. Каждая точка выборки экспортируется как дискретная таблица, и таблицы повторяются каждые 11 строк. Т.е. если b4 содержит значение аналита (A) из образца 1, то b15 содержит значение (A) для образца 2
. Я хочу иметь возможность извлечь все значения A, а также другие значения. Всего было найдено 6 аналитов в строках 3-7 столбцов BD, а затем повторено 11 ячеек вниз для создания таблицы (данные из 11 ячеек, скопированных во второй ряд новой таблицы и т. Д.) Это пример изпредыдущий отчет, где я вручную вытащил все данные и создал таблицу

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

Private Sub CommandButton1_Click()
Sheets("Sheet1").Range("D3").Copy Destination:=Sheets("Sheet2").Range("B2")
Sheets("Sheet1").Range("B4").Copy Destination:=Sheets("Sheet2").Range("C2")
Sheets("Sheet1").Range("B5").Copy Destination:=Sheets("Sheet2").Range("D2")
Sheets("Sheet1").Range("B6").Copy Destination:=Sheets("Sheet2").Range("E2")
Sheets("Sheet1").Range("B7").Copy Destination:=Sheets("Sheet2").Range("F2")
End Sub

Это макрос, который у меня есть в данный момент

1 Ответ

0 голосов
/ 25 октября 2019

Исходя из требований, следующее должно делать то, что вам нужно:

Private Sub CommandButton1_Click()

    Dim sourcesheet As Worksheet
    Dim destsheet As Worksheet
    Dim repeat_x_times As Long, loopcounter As Long
    Dim onelocation As Long, spread As Long
    Dim locations As Variant
    Dim locationlist As String

    '---------------------------------------
    '     edit these as you see fit
    '---------------------------------------
    Set sourcesheet = Sheets("Sheet1")
    Set destsheet = Sheets("Sheet2")
    locationlist = "D3,B4,B5,B6,B7"
    spread = 11
    repeat_x_times = 6
    '---------------------------------------

    locations = Split(locationlist, ",")

    With sourcesheet

        For loopcounter = 1 To repeat_x_times
            For onelocation = 0 To UBound(locations)
                .Range(locations(onelocation)).offset((loopcounter - 1) * spread, 0).Copy destsheet.Cells(loopcounter, 2 + onelocation)
                'or if you don't need formatting, just values (much quicker):
                'destsheet.Cells(loopcounter, 2 + onelocation).Value = .Range(locations(onelocation)).offset((loopcounter - 1) * spread, 0).Value
            Next
        Next

    End With
End Sub

Я сделал это легко настраиваемым для ваших нужд, просто отредактируйте переменные:

locationlistэто список ячеек, которые вы хотите выбрать, в том порядке, в котором вы хотите, чтобы они выводились на листе 2.

spread - это смещение между повторениями.

repeat_x_times - это количество строкВы хотите вывод.

Я использовал оператор копирования аналогично существующему коду, но если вы не хотите копировать форматирование и т. д., вы можете просто использовать переключатель значений. Я закомментировал код, но если вы хотите его использовать, удалите комментарий и закомментируйте строку copy.

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