Я пытаюсь скопировать все строки на новый лист, но только скопировать эти строки, где Чайлдс возраст выше 20.Копирования объединенных ячеек VBA
Я еще не написал заявление, если выбрать эти строки, но написали код для импорта данных и заполнили различные столбцы, чтобы получить 20-й день рождения с даты рождения.
Моя проблема заключается в том, что ячейки в столбцах, которые находятся на импортированном листе, объединены. Это объединяется, потому что один человек может иметь более одного ребенка, поэтому в этом случае ячейки, относящиеся к родительскому, объединяются. Это не позволит мне копировать объединенные ячейки.
На данный момент я просто пытаюсь разобраться, как скопировать весь лист, чтобы я знал, как копировать объединенные ячейки, прежде чем выполнять оператор If.
Это то, что у меня есть до сих пор (смелый бит внизу - это то, где я пытаюсь копировать объединенные ячейки. Я получаю сообщение об ошибке в строке с ActiveSheet.Range ("**"). MergeArea.Copy
Option Explicit
Sub ImportActiveList()
Dim FileName As String
Dim WS1 As Worksheet
Dim WS2 As Worksheet
Dim ActiveListWB As Workbook
Set WS2 = ActiveWorkbook.Sheets("Sheet1")
FileName = Application.GetOpenFilename(FileFilter:="Excel Files (*.xls*),*.xls*", _
Title:="Select Active List to Import", _
MultiSelect:=False)
If FileName = "False" Then
Exit Sub
Else
Set ActiveListWB = Workbooks.Open(FileName)
End If
Set WS1 = ActiveListWB.Sheets("Page1-1")
WS1.UsedRange.Copy WS2.Range("A1")
ActiveWorkbook.Close False
End Sub
Sub CalculateBirthday()
Dim lastrow As Long
lastrow = Range("X" & Rows.Count).End(xlUp).Row
ActiveSheet.Range("A5:AA291").AutoFilter
ActiveSheet.Range("$A$5:$AA$291").AutoFilter Field:=24, Criteria1:="Child"
Range("AB5") = "Today's Age Year/Month"
Range("AB7:AB" & lastrow).Formula = "=DATEDIF(RC[-2],TODAY(),""Y"") & "" Years, "" & DATEDIF(RC[-2],TODAY(),""YM"") & "" Months """
Columns("AB:AB").EntireColumn.AutoFit
Range("AC5") = "Today's Age Year Only"
Range("AC7:AC" & lastrow).Formula = "=DATEDIF(RC[-3],TODAY(),""Y"")"
Columns("AC:AC").EntireColumn.AutoFit
Range("AD5") = "Child 20th Birthday"
Range("AD7:AD" & lastrow).Formula = "=DATE(YEAR(R[-1]C[-4])+20, MONTH(R[-1]C[-4]),DAY(R[-1]C[-4]))"
Columns("AD:AD").EntireColumn.AutoFit
ActiveSheet.Range("A5:AA291").MergeArea.Copy 'copies the merged cells
Sheet2.Range("A1").PasteValues ' pastes what was copied into A1 on Sheet 2 and any merged cells**
End Sub
к сожалению, смелая немного не работал. Это последние 2 строки я после. в основном, я просто хочу, чтобы скопировать объединенные ячейки на новый лист. – dogmum
присоединяемых клетки = кошмар для работы с , каждый раз, один раз. Есть ли способ, которым вы можете настроить свою книгу так, чтобы она не объединяла ячейки? Вообще говоря, всегда плохая практика использования объединенных ячеек. – tigeravatar
Спасибо за ответ. Это не мои работы так что, к сожалению, я не имел права говорить, пришли ли они ко мне, которые уже слились. Я разблокировал их, попробовав это до и после фильтрации на «Ребенок», но это, к сожалению, удалило часть информации. – dogmum