Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 在电子表格中的行中循环时以特定值为目标_Excel_Vba_Reference_Copy_Copy Paste - Fatal编程技术网

Excel 在电子表格中的行中循环时以特定值为目标

Excel 在电子表格中的行中循环时以特定值为目标,excel,vba,reference,copy,copy-paste,Excel,Vba,Reference,Copy,Copy Paste,第二个问题 大家好,, 现在我来回答我的第二个问题 我试图通过循环编写一个vba代码,它可以在工作表中执行以下操作 1) 检查工作表BE中的Aasif有多少个苹果,并将其插入Sheet1,其中行为Aasif,列为apples,然后检查Aasif有多少个oranges并插入行为Aasif且列为oranges 2) 在检查完所有水果后,它应该会传到下一个人,Aeleta,然后再对每一列进行同样的检查 我不熟悉vba循环,不过我还提出了一些其他问题,因此非常感谢您的帮助。这并不难;) 请看 我给你们的

第二个问题 大家好,, 现在我来回答我的第二个问题

我试图通过循环编写一个vba代码,它可以在工作表中执行以下操作

1) 检查工作表BE中的
Aasif
有多少个苹果,并将其插入
Sheet1
,其中行为
Aasif
,列为
apples
,然后检查
Aasif
有多少个
oranges
并插入行为
Aasif
且列为
oranges

2) 在检查完所有水果后,它应该会传到下一个人,
Aeleta
,然后再对每一列进行同样的检查

我不熟悉vba循环,不过我还提出了一些其他问题,因此非常感谢您的帮助。

这并不难;) 请看

我给你们的代码与你们在链接中提供的电子表格一起工作。它将根据
“Sheet2”中的列表填充
“Sheet1”

注意:确保您的工作表被称为Sheet1和Sheet2,或者相应地修改代码

端接头

结果

为什么不将数据结构或表格作为
code
或图形包含在问题中?您好,非常感谢您的帮助,如果您不介意哪个代码在这里做什么,请您解释一下?@mynameislimchady是的,我在代码中添加了注释,请参阅更新的答案此代码正在工作,但是,如果我扩展表1或表2,它不会响应。是否可以继续,直到满足第2页上的空条件?我实际上是通过SQL提取数据,并将其以更图形化的格式放置,因此条目的数量会有所不同。这正是它所做的。它拾取列表中使用的最后一个单元格。这段代码解决了您的问题,您可以接受答案(绿色复选标记),这就是我们在stackoverflow上说谢谢的方式。如果你想得到更多的帮助,恐怕你得问一个新问题。谢谢是的,明白了,伙计,对不起我的坏,我还在试着让我的头绕着圈东西:s,我应该说没有多大成功:(
Sub Main()

Dim ws1 As Worksheet, ws2 As Worksheet ' sheet variables declaration
Set ws1 = Sheets("Sheet1"): Set ws2 = Sheets("Sheet2") ' binding sheets to variables

Dim rng1 As Range, rng2 As Range ' range variables
Dim i As Long, j As Long, k As Long ' iterators

' for each cell in column F in sheet2
For i = 2 To ws2.Range("F" & Rows.Count).End(xlUp).Row
    Set rng2 = ws2.Range("F" & i) ' binding cells from column F (sheet2) to rng2 variable
    ' for each cell in column B on sheet1
    For j = 2 To ws1.Range("B" & Rows.Count).End(xlUp).Row
        Set rng1 = ws1.Range("B" & j) ' binding cells from column B (sheet1) to rng1 variable
        ' comparing both words ( names )
        If StrComp(rng2, rng1, 1) = 0 Then
            For Each Column In Sheet1
            For k = 3 To ws1.Cells(1, Columns.Count).End(xlToLeft).Column
                ' if the name of column matches the offset or rng2 (name)
                If StrComp(rng2.Offset(0, 1), Cells(1, k), 1) = 0 Then
                    ' copy/paste the amount of fruits from sheet2 to corresponding cells in sheet1
                    Cells(rng1.Row, k) = rng2.Offset(0, 2)
                End If
            Next k ' next column
        End If
        Set rng1 = Nothing
    Next j ' next row in sheet1
    Set rng2 = Nothing
Next i ' next row in sheet2