将2个表合并为1个表。添加相邻的值、vba或公式

将2个表合并为1个表。添加相邻的值、vba或公式,vba,excel,Vba,Excel,正在寻找将两个表合并在一起的方法,但卷位于不同的列中 由于某些原因,您无法将图像添加到帖子中,没关系 假设A组有产品,B组有位置,C组有销售,D组有单位 表1有A、B和C列(D列=空白) 表2的列C=空白 基本上,两个表的结构相同,但其中一个表填充了单位,销售为空,而第二个表填充了销售,销售为空 现在我想创建一个表来组合这个。因此,一个表和它有销售和单位紧挨着对方 最后一个问题,他们可能不会一行一行地加起来。。。也就是说,如果两个表中的产品和地点不匹配,我需要将其作为单行添加到末尾,并且(假设它

正在寻找将两个表合并在一起的方法,但卷位于不同的列中

由于某些原因,您无法将图像添加到帖子中,没关系

假设A组有产品,B组有位置,C组有销售,D组有单位

表1有A、B和C列(D列=空白) 表2的列C=空白

基本上,两个表的结构相同,但其中一个表填充了单位,销售为空,而第二个表填充了销售,销售为空

现在我想创建一个表来组合这个。因此,一个表和它有销售和单位紧挨着对方

最后一个问题,他们可能不会一行一行地加起来。。。也就是说,如果两个表中的产品和地点不匹配,我需要将其作为单行添加到末尾,并且(假设它有单位)值将显示在单位列中,但销售额将为空,反之亦然

这可能吗?喜欢excel中的VBA或公式解决方案


谢谢。

简单快捷的答案是,我过滤得到的唯一组合仅粘贴为值,然后对于单位,我在产品上对一个表进行sumif以获得单位,然后在它旁边的单元格(销售)中,我对产品组合上的第二个表进行sumif

虽然是用VBA完成的

然后运行一些代码,检查units和sales是否都为=0(相邻的每个单元格中为0),然后删除entirerow。如果有人想看代码。让我知道,我会发帖的

第一步是创建一个包含所有组合的UI,并仅复制/粘贴唯一值

Columns("A:A").Select
Application.CutCopyMode = False
Selection.insert Shift:=xlToRight
Range("A1").Select
ActiveCell.FormulaR1C1 = "UI"
Range("A2").Select
ActiveCell.FormulaR1C1 = _
"=RC[1]&"",""&RC[2]&"",""&RC[3] 
&"",""&RC[4]&"",""&RC[5]&"",""&RC[6]&"",""&RC[7]&"",""&RC[8]"
Selection.AutoFill Destination:=Range("A2:A27912")
Range("A1").Select
Range(Selection, Selection.End(xlDown)).Select
Range("A1:A30000").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( 
_
    "O1"), Unique:=True
Range("O1").Select
Range(Selection, Selection.End(xlDown).Offset(-1, 0)).Select
下一件事是在列旁边求和产品,并在“文本到列”中添加,这样就可以针对销售用户界面和数量用户界面创建sumif

Selection.Copy
Sheets("Next").Select
Range("A1").Select
ActiveSheet.Paste
Columns("A:A").Select
Application.CutCopyMode = False
Selection.TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=True, Space:=False, Other:=False, FieldInfo _
    :=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), 
 Array(6, 1), _
    Array(7, 1), Array(8, 1)), TrailingMinusNumbers:=True
Sheets("Other").Select
Range("B1:L1").Select
Selection.Copy
Sheets("Next").Select
Range("A1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
Range("L1").Select
With Selection.Interior
    .Pattern = xlSolid
    .PatternColorIndex = xlAutomatic
    .ThemeColor = xlThemeColorDark1
    .TintAndShade = -0.349986266670736
    .PatternTintAndShade = 0
End With
ActiveCell.FormulaR1C1 = "UI"
Range("L2").Select
Sheets("Other").Select
Range("O2").Select
Range(Selection, Selection.End(xlDown).Offset(-1, 0)).Select
Selection.Copy
Sheets("Next").Select
ActiveSheet.Paste
Range("J2").Select
Application.CutCopyMode = False

Range("J2").Select
ActiveCell.FormulaR1C1 = _
    "=SUMIF('Other'!R2C1:R50000C1,RC12,'Other'!R2C[1]:R50000C[1])"
Range("J2").Select
Selection.AutoFill Destination:=Range("J2:K2"), Type:=xlFillDefault
Range("J2:K2").Select
Selection.AutoFill Destination:=Range("J2:K10000")

Range("J2:K10000").Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
Columns("L:L").Select
Application.CutCopyMode = False
Selection.Delete Shift:=xlToLeft
(代码的这一部分不是很整洁,但它确实做到了…)

接下来,如果两个值都是0,我将删除0

Dim VRange As Range

Set VRange = Range(ActiveSheet.Range("J1"), 
ActiveSheet.Range("J1").End(xlDown))

With VRange
.AutoFilter
.AutoFilter Field:=1, Criteria1:="0"
.Resize(.Rows.Count - 
1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilter
 End With

 Sheets("Other").Select
 Range("A1:I1").ClearContents
 Range("A1:I1").Value = Sheets("Data").Range("C1:K1").Value

Dim URange As Range

Set URange = Range(ActiveSheet.Range("J1"), 
ActiveSheet.Range("J1").End(xlDown))

With URange
.AutoFilter
.AutoFilter Field:=1, Criteria1:="0"
.Resize(.Rows.Count - 
1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
.AutoFilter
End With
请注意,我已经对此做了一些更改,因此请参考您自己的数据并进行匹配


希望这些都是正确的代码:p我可能复制了错误的代码,但其中涉及的问题更多:(

使用
索引(匹配)的组合(
参见本教程示例:不显示就很难解释。索引(Match将不起作用,因为我正在将它们合并到一个没有副本的表中。Match将只找到第一个值并给出该值,而在原始表中,UI可能有多行。如果答案相关,请务必在答案中包含代码。这对以后人们通过谷歌找到答案更有帮助。仅仅因为我的原因而放弃投票是不公平的。)没有添加代码…仍然添加了解决方案…只是不礼貌。否决票没有什么不礼貌的。它们是网站故意的功能。