1

Я даже не уверен, возможно ли это, и Google ничего не показывает для меня. У меня есть таблица с данными в C6:F12, G6:G8. Я хочу вставить кнопку, которая отправит все эти данные в одну новую строку другой таблицы. Эта таблица будет расположена дальше вниз по рабочему листу. В зависимости от размера графиков, которые я вставляю, первый набор данных будет примерно 50A:50AD.

Данные из G7 и G8 будут объединены и помещены в 50A. Тогда C6:F6 будет идти в 50B:50E, C7:F7 будет идти в 50F:50I, C8:F8 будет идти в 50J:50 м, C9:F9 будет идти в 50N:50Q, C10:F10 будет идти в 50R:50U C11:F11 - 50V:50Y, C12:F12 - 50Z:50AC, а G6 - 50AD.

Каждый раз, когда нажимается кнопка, создается новая строка, поэтому второй набор данных будет находиться в тех же столбцах, но в строке 51, третий в строке 52 и т.д.

1 ответ1

5

Шаг за шагом:

  1. В рабочей книге нажмите Alt - F11, чтобы открыть редактор Visual Basic (VBE).

  2. Нажмите Вставить> Модуль в меню и вставьте следующее в большое окно кода

    Option Explicit
    
    Sub copyRow()
    Dim ws As Worksheet
    Dim lRow As Long
    
    ' define which worksheet to work on, i.e. replace Sheet1 with the name of your sheet
    Set ws = ActiveWorkbook.Sheets("Sheet1")
    
    ' determine the last row with content in column A and add one
    lRow = ws.Cells(Rows.Count, "A").End(xlUp).Row + 1
    
    ' combine G7 and G8 and copy into column A, next empty row
    ws.Range("A" & lRow) = ws.[G7] & " " & ws.[G8]
    ' copy the other cells into their ranges
    ws.Range("C6:F6").Copy ws.Range("B" & lRow)
    ws.Range("C7:F7").Copy ws.Range("F" & lRow)
    ws.Range("C8:F8").Copy ws.Range("J" & lRow)
    ws.Range("C9:F9").Copy ws.Range("N" & lRow)
    ws.Range("C10:F10").Copy ws.Range("R" & lRow)
    ws.Range("C11:F11").Copy ws.Range("V" & lRow)
    ws.Range("C12:F12").Copy ws.Range("Z" & lRow)
    ws.Range("G6").Copy ws.Range("AD" & lRow)
    ws.[A1].Select
    End Sub
    
  3. Закройте VBE

  4. В свой лист вставьте кнопку или форму. Щелкните правой кнопкой мыши форму и выберите "Назначить макрос". Выберите макрос с именем "copyRow"

  5. В столбце A поместите текст в ячейку, чтобы отметить начало таблицы данных. Затем нажмите кнопку, и текущие значения таблицы и диапазонов в строках с 6 по 12 будут скопированы в следующую пустую строку.

Этот сценарий основан на предположении, что каждая новая строка данных будет иметь какое-то значение в G7 и G8, поэтому каждая строка в таблице ниже будет иметь значение в столбце A.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .