Excel 如何从不同的工作表中添加值,并保留指向工作表的公式+;细胞?

Excel 如何从不同的工作表中添加值,并保留指向工作表的公式+;细胞?,excel,vba,formula,add,worksheet,Excel,Vba,Formula,Add,Worksheet,我正在尝试将不同工作表(工作表2至5)中的值添加到我的主工作表(工作表1)中。在表1中,我希望单元格包含指向不同表的正确公式(如果可能) 通常是这样的: ='Sheet2'!D5+'Sheet3'!D165 我所有的工作表都有不同的产品,但有些工作表包含相同的产品。因此,我想搜索所有这些内容,并将它们添加到我的主工作表(工作表1)中 因此,我需要在代码中修复的是这个部分(位于For循环中最远的部分): 让它在想要的单元格中创建一个公式,看起来像这样: ='Sheet2'!D5+'Sheet3'

我正在尝试将不同工作表(工作表2至5)中的值添加到我的主工作表(工作表1)中。在表1中,我希望单元格包含指向不同表的正确公式(如果可能)

通常是这样的:

='Sheet2'!D5+'Sheet3'!D165
我所有的工作表都有不同的产品,但有些工作表包含相同的产品。因此,我想搜索所有这些内容,并将它们添加到我的主工作表(工作表1)中

因此,我需要在代码中修复的是这个部分(位于For循环中最远的部分):

让它在想要的单元格中创建一个公式,看起来像这样:

='Sheet2'!D5+'Sheet3'!D165
它还必须能够添加另一个单元格,因为循环通过可能包含相同产品的多个表(表2到表5)。
也就是说,对于每种产品,我只希望在主工作表中有一行。

我最终设法找到了解决方案。 似乎我已经切换了循环的som中的L和I,这导致了值不能一起添加

下面的代码(我没有翻译成英语,但如果有人想要/需要,可以这样做)解决了我的问题,并给出了表2到表5中按表1中的产品排序的值:

Sub OppdaterePlukkelisteSummert()
'Kode for å Oppdatere Plukkeliste Alle Artikler Summert
Dim AktivtArk As String
Dim AktivtArkNavn As String
Dim K As Integer
Dim Teller As Integer
Dim value1 As Integer
Dim value2 As Integer


'Sletter Plukklisten for å oppdatere og sortere på nytt:
Worksheets(1).Range("A2:H10000").Clear


'HENTING AV DATA FRA ARKET "K":
AktivtArk = "Artikler Summert fra Alle Ark"
AktivtArkOverskrift = "Artikler Summert fra Alle Ark"
'Setter inn Overskrift som Forteller kva ark utstyret kommer fra:
eRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Worksheets(1).Cells(eRow, 1) = AktivtArkOverskrift
Worksheets(1).Cells(eRow, 1).Font.Bold = True
'Sjekker hvilke/hvilket rader/utstyr som skal plukkes, og legger det inn i "Ark1":
For K = 2 To 5
    For I = 2 To 1000
        If Worksheets(K).Cells(I, 6) > 0 Then
        Teller = 0
            For L = 2 To 1000
                If Worksheets(K).Cells(I, 1) = Worksheets(1).Cells(L, 1) Then
                    value1 = Worksheets(1).Cells(L, 4)
                    value2 = Worksheets(K).Cells(I, 4)
                    Worksheets(1).Cells(L, 4) = value1 + value2
                    Worksheets(1).Cells(L, 6) = value1 + value2
                Else
                    Teller = Teller + 1
                End If
            Next L
            If Teller > 998 Then
                eRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
                For J = 1 To 11
                    Worksheets(1).Cells(eRow, J) = Worksheets(K).Cells(I, J)
                Next J
                Worksheets(1).Cells(eRow, 6).Font.Color = RGB(0, 150, 0)
                Worksheets(1).Cells(eRow, 7).Font.Color = RGB(0, 150, 0)
            End If
        End If
    Next I
Next K

Worksheets(1).Range("A2").Select
End Sub
我希望这对其他人有用:-)
感谢评论中的所有帮助和建议

我终于找到了解决办法。 似乎我已经切换了循环的som中的L和I,这导致了值不能一起添加

下面的代码(我没有翻译成英语,但如果有人想要/需要,可以这样做)解决了我的问题,并给出了表2到表5中按表1中的产品排序的值:

Sub OppdaterePlukkelisteSummert()
'Kode for å Oppdatere Plukkeliste Alle Artikler Summert
Dim AktivtArk As String
Dim AktivtArkNavn As String
Dim K As Integer
Dim Teller As Integer
Dim value1 As Integer
Dim value2 As Integer


'Sletter Plukklisten for å oppdatere og sortere på nytt:
Worksheets(1).Range("A2:H10000").Clear


'HENTING AV DATA FRA ARKET "K":
AktivtArk = "Artikler Summert fra Alle Ark"
AktivtArkOverskrift = "Artikler Summert fra Alle Ark"
'Setter inn Overskrift som Forteller kva ark utstyret kommer fra:
eRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
Worksheets(1).Cells(eRow, 1) = AktivtArkOverskrift
Worksheets(1).Cells(eRow, 1).Font.Bold = True
'Sjekker hvilke/hvilket rader/utstyr som skal plukkes, og legger det inn i "Ark1":
For K = 2 To 5
    For I = 2 To 1000
        If Worksheets(K).Cells(I, 6) > 0 Then
        Teller = 0
            For L = 2 To 1000
                If Worksheets(K).Cells(I, 1) = Worksheets(1).Cells(L, 1) Then
                    value1 = Worksheets(1).Cells(L, 4)
                    value2 = Worksheets(K).Cells(I, 4)
                    Worksheets(1).Cells(L, 4) = value1 + value2
                    Worksheets(1).Cells(L, 6) = value1 + value2
                Else
                    Teller = Teller + 1
                End If
            Next L
            If Teller > 998 Then
                eRow = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Offset(1, 0).Row
                For J = 1 To 11
                    Worksheets(1).Cells(eRow, J) = Worksheets(K).Cells(I, J)
                Next J
                Worksheets(1).Cells(eRow, 6).Font.Color = RGB(0, 150, 0)
                Worksheets(1).Cells(eRow, 7).Font.Color = RGB(0, 150, 0)
            End If
        End If
    Next I
Next K

Worksheets(1).Range("A2").Select
End Sub
我希望这对其他人有用:-)
感谢评论中的所有帮助和建议

我要用这个简单的例子来说明:

I = 1 'for example

For K = 2 To 5
    Worksheets("Sheet1").Cells(I, 4).Value = Worksheets("Sheet1").Cells(I, 4).Value + _
        WorksheetFunction.SumIf(Worksheets(K).Range("A:A"), "Bananas", Worksheets(K).Range("D:D"))
Next K

我打算用这个简单的例子来说明:

I = 1 'for example

For K = 2 To 5
    Worksheets("Sheet1").Cells(I, 4).Value = Worksheets("Sheet1").Cells(I, 4).Value + _
        WorksheetFunction.SumIf(Worksheets(K).Range("A:A"), "Bananas", Worksheets(K).Range("D:D"))
Next K

你看过透视表了吗?你可能不需要任何代码Hi Zac是的我已经调查过了。我想通过使用两个不同的按钮,以两种方式安排产品。第一种方式是按每张纸排列(我得到了一个工作代码),这样我就可以只看到每张纸上要求的产品(要挑选的产品数量)。第二种方法是我在这里发布的问题,我想把所有产品加起来,看看我需要挑选多少种产品。对它进行编码也会使它对其他用户来说“牢不可破”。所以你需要用循环来构建一个公式字符串?嗨,SJR,我还不太擅长Excel VBA,所以不确定你的意思。但是,是的,我需要一个循环,它允许我扫描4张表(2到5),找到每张表(2到5)中的产品,并将它们汇总到表1中。我认为我的循环很好,但我正在努力使用公式将值添加到工作表1中,将新值添加到已经添加到工作表1中的值中(将值添加到循环中较早工作表中的值添加到的同一单元格中)。我的循环首先通过第2页,然后是第3页,依此类推。希望这更清楚,不要太混乱。不确定我是否遵循。如果向单元格中添加值,则不能使用公式,因为公式将引用自身。您当前的代码没有做您希望它做的事情,具体是什么?您查看过数据透视表吗?你可能不需要任何代码Hi Zac是的我已经调查过了。我想通过使用两个不同的按钮,以两种方式安排产品。第一种方式是按每张纸排列(我得到了一个工作代码),这样我就可以只看到每张纸上要求的产品(要挑选的产品数量)。第二种方法是我在这里发布的问题,我想把所有产品加起来,看看我需要挑选多少种产品。对它进行编码也会使它对其他用户来说“牢不可破”。所以你需要用循环来构建一个公式字符串?嗨,SJR,我还不太擅长Excel VBA,所以不确定你的意思。但是,是的,我需要一个循环,它允许我扫描4张表(2到5),找到每张表(2到5)中的产品,并将它们汇总到表1中。我认为我的循环很好,但我正在努力使用公式将值添加到工作表1中,将新值添加到已经添加到工作表1中的值中(将值添加到循环中较早工作表中的值添加到的同一单元格中)。我的循环首先通过第2页,然后是第3页,依此类推。希望这更清楚,不要太混乱。不确定我是否遵循。如果向单元格中添加值,则不能使用公式,因为公式将引用自身。您当前的代码没有做您希望它做的事情,具体是什么?