Я новичок в Excel, и был бы признателен за помощь с макросом, который делает следующее.
Всего имеется 58 генов (столбец A) с 2 записями для каждого гена. Изображение показывает только 4 гена.
После запуска макроса (с помощью сочетания клавиш) пользователю будет предложено ввести номер образца (в данном примере Sample1), а затем строка для каждого гена должна быть скопирована в соответствующие листы (уже созданы). Все гены имеют уникальные имена. В каждом из генных листов номер пробы должен быть заполнен в столбце А.
Я не могу опубликовать более 2 скриншотов. Листы для других генов должны содержать 2 строки для этого гена с "Sample1" в столбце A.
Как только макрос завершит копирование строк на 58 листов (для 58 генов), он должен вернуться на лист ввода и удалить ранее вставленные данные. Пользователь должен иметь возможность вставлять данные для следующего образца, запускать макрос, вводить номер образца, когда будет предложено, и данные гена для этого образца копируются в следующие 2 строки их соответствующих листов гена.
Есть данные для тысяч сэмплов для базы данных, и я надеюсь получить макрос, который сможет это сделать.
Изменить: код сейчас (спасибо Мриг) следующим образом:
Sub Macro1()
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Dim lastRow As Long, i As Long, currLastRow
Dim ws As Worksheet, currWS As Worksheet
Dim SampleID As String
SampleIDform.Show
Set ws = ThisWorkbook.Sheets("Input")
lastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To ThisWorkbook.Worksheets.Count
Set currWS = ThisWorkbook.Sheets(i)
currLastRow = currWS.Cells(Rows.Count, "A").End(xlUp).Row + 1
With ws.Range("A1", "D" & lastRow)
.AutoFilter Field:=1, Criteria1:=currWS.Name
.Offset(1, 0).Copy currWS.Range("A" & currLastRow)
.AutoFilter
Range("A" & currLastRow).Value = SampleID
End With
Next i
ws.Range("A2", "D" & lastRow).ClearContents
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
End Sub
Private Sub OkButton_Click()
SampleID = txtSampleID.Value
Unload Me
End Sub
Я добавил в строку Range("A" & currLastRow).Value = SampleID
для цикла with, но я не могу включить SampleID в каждый лист в столбце A.
Что я делаю неправильно?