对于很多人来说这可能很容易,但我是VBA的新手; 以下是我将多个Excel文件值添加到一个主表中的代码。虽然我这样做,但我想更新关于其键值的值。
Sub tekSheetMerging()
Dim masterSheet As Worksheet
Set masterSheet = sheets("KoMKo")
'Variable to save the used Range of the master sheet
Dim usedRangeMaster As Integer
Dim ws As Worksheet
'loop through each worksheet in current workbook
For Each ws In Worksheets
'If sheetname contains "data" (UCase casts the Name to upper case letters)
If InStr(1, UCase(ws.Name), "DATA", vbTextCompare) > 0 Then
'calculate the used range of the master sheet
usedRangeMaster = masterSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1
'Variable to save the used Range of the sub sheet
Dim usedRangeSub As Integer
'calculate the used range of the sub sheet
usedRangeSub = ws.UsedRange.SpecialCells(xlCellTypeLastCell).Row
'copy relevant range from the subsheet
ws.Range("C1:C" & usedRangeSub).Copy
'paste the copied range after the used range in column a
masterSheet.Range("A" & usedRangeMaster).PasteSpecial
End If
Next ws
End Sub
所以,现在我有一个Excel表,其中包含A列中的键值和该行中其他列中的其他值。当我找到一个与以前添加的键值重复的键时,我想删除该单元格及其完整行。通过这样做,我想更新关于其键值的值。如果我要添加另一个密钥,它应该保留在列表中,但没有问题。
我该怎么做?
答案 0 :(得分:0)
最好首先浏览子表(源)中的键,然后将它们逐个与主站中的键进行比较。应从主服务器中删除任何匹配项。然后将子表中的整个数据复制到主数据库中。
因此我的代码在此行之前:
'copy relevant range from the subsheet
ws.Range("C1:C" & usedRangeSub).Copy
用你的变量替换我的变量:
With mastersheet
for i = firstrow to lastrow 'first and lastrow of data in subsheet
set f = .Range("A:A").Find(ws.Range("A" & i).Value, _
LookIn:=xlValues, LookAt:=xlWhole)
If Not f is Nothing then
.Range("A" & f.Row).EntireRow.Delete
End If
next i
end with
在此之后不要忘记更新usedRangeMaster,因为删除会更短。然后复制粘贴您的数据。
注意:此代码假定您的密钥是唯一的,并且您的主服务器中永远不会有重复项(如果主服务器仅通过此代码编写,则会出现这种情况)。这就是为什么它只搜索一次主。
编辑:我看到freakfeuer已经为你提供了一些链接?无论如何,让我知道它是否有效。