0
견적 원가 계산을 수행하는 통합 문서가 있습니다. "Costing Sheet"라는 메인 시트와 다른 이름을 가진 개별 시트가 있습니다. 모든 시트의 첫 번째 행은 헤더와 동일한 형식입니다. 난 그냥 원가 계산 시트에서 열 A의 값을 검색하고 다른 시트의 열 A의 값과 비교하고 발견 된 사본이 있으면 수식과 형식이있는 개별 시트의 전체 행 A : W를 원가 계산 시트 "를 일치하는 값과 비교합니다. 모든 데이터를 복사하고 새 시트를 만드는 매크로를 만들었습니다. 하지만 그건 내가 원하는 출력을주지 않습니다. 여러 포럼을 검색했지만 couldnt는 같은 것을 찾습니다. 당신이 엄청나 내가수식이있는 행을 주 시트로 복사
Sub CopyFromWorksheets()
Dim wrk As Workbook
Dim sht As Worksheet
Dim trg As Worksheet
Dim rng As Range
Dim colCount As Integer
Set wrk = ActiveWorkbook
For Each sht In wrk.Worksheets
If sht.Name = "Master" Then
MsgBox "There is a worksheet called as 'Master'." & vbCrLf & _
"Please remove or rename this worksheet since 'Master' would be" & _
"the name of the result worksheet of this process.", vbOKOnly + vbExclamation, "Error"
Exit Sub
End If
Next sht
Application.ScreenUpdating = False
Set trg = wrk.Worksheets.Add(After:=wrk.Worksheets(wrk.Worksheets.Count))
'Rename the new worksheet
trg.Name = "Master"
'Get column headers from the first worksheet
'Column count first
Set sht = wrk.Worksheets(1)
colCount = sht.Cells(1, 255).End(xlToLeft).Column
'Now retrieve headers, no copy&paste needed
With trg.Cells(1, 1).Resize(1, colCount)
.Value = sht.Cells(1, 1).Resize(1, colCount).Value
'Set font as bold
.Font.Bold = True
End With
'We can start loop
For Each sht In wrk.Worksheets
'If worksheet in loop is the last one, stop execution (it is Master worksheet)
If sht.Index = wrk.Worksheets.Count Then
Exit For
End If
'Data range in worksheet - starts from second row as first rows are the header rows in all worksheets
Set rng = sht.Range(sht.Cells(2, 1), sht.Cells(65536, 1).End(xlUp).Resize(, colCount))
'Put data into the Master worksheet
trg.Cells(65536, 1).End(xlUp).Offset(1).Resize(rng.Rows.Count, rng.Columns.Count).Value = rng.Formula
Next sht
'Fit the columns in Master worksheet
trg.Columns.AutoFit
Sheets("Master").Select
colCount = Range("A" & Rows.Count).End(xlUp).Row
Range("L2:L" & colCount).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
'Screen updating should be activated
Application.ScreenUpdating = True
Sheets("Costing Sheet").Select
End Sub
안녕하십니까. Mr. Tony Dallimore 답장을 보내 주셔서 감사합니다. 각 개별 시트에는 하단에 해당 시트에 대한 전체 계산이 있습니다. 이 매크로를 실행하면 모든 데이터가 마스터 시트로 전송됩니다. 하지만 마스터 시트 요약에 개별 시트가 필요하지 않습니다. 그래서 필자는 빈 L 열의 기준에 따라 마스터 시트에 복사 된 개별 시트 합계를 피하고자했습니다. 그러나 실용적인 문제가 있습니다. ** 메인 시트의 A 열에있는 값을 기준으로 개별 시트의 전체 행을 메인 시트로 복사하는 매크로 만 필요합니다 ** –
내 대답은 코드를 개선하려고 시도했지만 아무 것도 추가하지 않았습니다. 원래 코드에는 워크 시트 "원가 계산 시트"에 대한 값을 확인하는 것이 없으므로 내 버전에는 없습니다. 나는 당신의 질문을 더주의 깊게 읽었으며, 당신이 찾는 코드는 수정 된 버전 이상입니다. "원가 계산 시트"에서 어떤 값을 검색합니까? 다른 시트에서 어떤 값을 비교합니까? 어떤 행이 "마스터"로 복사합니까? –
나는 쉽게 이해할 수있는 기초를 지적 할 것이다. –