我試圖複製的範圍中選擇的行是基於價值的一個cell.I行的值的行希望爲所有這樣做包含單元格中相同值的行,然後轉到下一個附加到第一個列表底部的值。Excel 2007中,複製從一個表到另一個基於在1列
下面是我在解釋什麼,我希望達到的嘗試 - 希望這些都有助於解釋更多我的困境。我四處尋找,但沒有找到我想要的東西。我認爲這很簡單,可能是。
我收到一個數據轉儲數千個數據的行和列18中。根據列P「合同」的價值,我想將整行復制到新的單個工作表workingdata
。不是所有的數據都會進入workingdata
工作表。
合同編號C1234,c1235,c2345等
什麼,我實現被複制和排序後,所以複製數據的所有行,其中合同編號爲C1234,在workingdata
,然後直接在其下方複製合約爲c1235等的所有行。
我以爲我可以選擇的範圍P:P和排序,但無濟於事。
Sheets("Data Dump").Select
Columns("P:P").Select
If Selection.Value = "C1234" Then
Selection.EntireRow.copy
我知道我應該張貼什麼我都試過了,但它是一個可憐的,由於某種原因,我似乎無法讓我的頭一輪這一個。
這裏是我的最新努力 - 我知道有錯誤
Dim oWorksheet As Excel.Worksheet
Dim oRangeSource As Excel.Range
Dim oRangeDest As Excel.Range
Set oWorksheet = Worksheets("DataDump")
Set oRangeSource = oWorksheet.Range("p:p")
Set oRangeDest = Worksheets("workingdata")
If oRangeSource="CA0004000" Then Select.EntireRow
Selection.EntireRow.copy
Sheets("workingdata").Select.Paste
End If
最新努力,但擺脫不必要的不排序數據,或者,我必須做一個手工篩選和排序,其種種失敗的對象宏觀
Sub copy()
'
' copy Macro
'
Dim rngContracts As Range: Set rngContracts = Sheets("DataDump").Range("P:P")
Dim wsData As Worksheet
Dim wsFound As Boolean: wsFound = False
Dim ws As Worksheet
For Each ws In ThisWorkbook.Worksheets
If ws.Name = "Working Data" Then
Set wsData = ws
wsFound = True
Exit For
End If
Next ws
If wsFound = False Then
Application.CutCopyMode = False
ActiveSheet.Range("A1").EntireRow.copy
Set wsData = Sheets.Add(After:=Sheets(Sheets.Count))
wsData.Name = "Working Data"
wsData.Range("A1").EntireRow.PasteSpecial xlPasteAll, Transpose:=False
End If
Dim iCell As Range
For Each iCell In rngContracts
If iCell.EntireRow.Hidden = False Then
Application.CutCopyMode = False
iCell.EntireRow.copy
wsData.Range("P" & Rows.Count).End(xlUp).Offset(1, 0).EntireRow.PasteSpecial xlPasteAll, Transpose:=False
End If
Next iCell
Application.CutCopyMode = False
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
End Sub
最新attaempt - 複製我所需要的數據,但不排序:
Sub copytest()
'
' copytest Macro
'
Set MR = Sheets("data Dump").Range("P:P")
For Each cell In MR
If cell.Value = "CA000154" Then
cell.EntireRow.copy
Sheets("working data").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial
End If
If cell.Value = "CA000220" Then
cell.EntireRow.copy
Sheets("working data").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial
End If
If cell.Value = "CA000393" Then
cell.EntireRow.copy
Sheets("working data").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial
End If
If cell.Value = "CA000429" Then
cell.EntireRow.copy
Sheets("working data").Range("A" & Rows.Count).End(xlUp).Offset(1, 0).PasteSpecial
End If
Application.CutCopyMode = False
Next
End Sub
如果我正確理解你的問題,你的問題的一部分就是如何對你的表進行排序。爲此,僅選擇要排序的列P是不夠的;你還需要選擇17個應該排序的其他列!你能更清楚地描述你想要你的代碼除了排序嗎?是否有一些不復制某些行的標準,因爲你說「不是所有的數據都會進入'workingdata'工作表?」? – 2011-04-13 17:00:36
使用列p對數據進行排序,即擺脫我不想要的合同,但對於我想要的合同,將它們組合在一起並複製到新工作表。但我需要複製整行以獲取我想要的合同。 – SteveW1968 2011-04-14 06:22:03
你曾經在VBA中使用過「Watches」嗎?他們可以幫助你理解你的代碼實際上在做什麼。例如,你做的If比較(順便說一句缺少End If)會比較一個數組(因爲你選擇了一個完整的列)和一個值。你會想在你的代碼中添加一個For循環,逐個遍歷P列的單元格...... – 2011-04-14 07:46:29