0
私には見積り原価計算を行うワークブックがあります。 「原価計算表」という名前のメインシートと、異なる名前を持つ個々のシートがあります。すべてのシートは、ヘッダーとしての最初の行と同じ形式です。私はちょうど "原価計算表"の列Aの値を検索し、他のシートの列Aの値と比較し、見つかった場合は行A:Wを個別の数式と書式のシートから "原価計算シート "と一致する値と比較します。すべてのデータをコピーして新しいシートを作成するマクロを作成しました。しかし、それは私に望ましい出力を与えません。私はいくつかのフォーラムを検索しましたが、同じことを見つけることができませんでした。あなたがメシスを助けることができれば、それは大きな助けになり、私はあなたのコードの目的は、ワークシート「マスターに他のすべてのワークシートの内容のコピーを作成するように見える数式を含む行をメインシートにコピー
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の値に基づいて個々のシートからメインシートに行全体をコピーするマクロが必要です** –
私の答えは、コードを改善しようとしましたが、何も追加しませんでした。元のコードには、ワークシート "原価計算シート"に対して値をチェックするものはありませんので、私のバージョンではありません。私はあなたの質問をより慎重に読んでおり、あなたが求めるコードは修正されたバージョン以上のものです。 「原価計算表」でどのような値を検索しますか?他のシートでどのような価値観を比較していますか? 「マスター」にどの行がコピーされますか? –
私は理解しやすいかもしれない基本を指摘します。 –