Vba 搜索关键字上方的单元格以复制和替换另一关键字下方的单元格

Vba 搜索关键字上方的单元格以复制和替换另一关键字下方的单元格,vba,excel,Vba,Excel,我需要帮助为Excel创建VBA代码,这将使我的日常工作更轻松。 我需要找到关键字“提交”,并采取的权利,上面的单元格,复制单元格 将单元格粘贴到另一个关键字“Totals”下面。并循环它,以便它继续查找下一个“提交”和“总数” 我没学过VBA。 我通常只是复制和粘贴我在网上找到的代码。 我的代码可能乱七八糟,到处都是 我的这段代码不起作用,它使用第一个关键字“Submissions”上面的单元格,并粘贴到所有“Totals”下面的单元格,这不是我想要的。我想要第一个“总计”下的第一个“提交”单

我需要帮助为Excel创建VBA代码,这将使我的日常工作更轻松。 我需要找到关键字“提交”,并采取的权利,上面的单元格,复制单元格

将单元格粘贴到另一个关键字“Totals”下面。并循环它,以便它继续查找下一个“提交”和“总数”

我没学过VBA。 我通常只是复制和粘贴我在网上找到的代码。 我的代码可能乱七八糟,到处都是

我的这段代码不起作用,它使用第一个关键字“Submissions”上面的单元格,并粘贴到所有“Totals”下面的单元格,这不是我想要的。我想要第一个“总计”下的第一个“提交”单元格上面的单元格值(日期格式:2018年1月2日)和第二个“总计”下的第二个“提交”单元格上面的单元格值,然后继续。它们都在同一列(A列)

任何帮助都将不胜感激

不知道是怎么回事,为什么,我是用这个工作的

    Application.ScreenUpdating = False
 Dim x
Dim y
Dim y_start
Dim x_start

    y_start = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
 x_start = Cells(Rows.Count, ActiveCell.Column).End(xlUp).Row
    For x = x_start To ActiveCell.Row Step -1
    If Cells(x, 1) = "Submissions" Then
            For y = x_start To ActiveCell.Row Step -1

                If Cells(y, 1).Value = "Totals" Then

             ActiveCell(x - 1, 1).Copy ActiveCell(y + 1, 1)
                    Application.CutCopyMode = False
                x_start = x + 2
                  Exit For
                End If
        Next
        End If
    Next
 Application.ScreenUpdating = True

谢谢你的帮助

为了得到一个好的答案,请更好地描述一下你想做什么。ie如何格式化数据,这通常是理解如何处理数据所必需的。 不过我会尽力帮你的。为此,您需要了解vba中的一些基本结构。第一个是For或While循环:

For i = 1 to 10
    'Do this code
Next i

Do While condition = True
    'Do this code
Loop
上面的for循环将运行您的代码10次,因此,如果您确切知道要检查多少个单元格,则需要使用该循环。如果在条件停止为真之前,不知道需要检查多少单元格,请使用while循环

您还需要知道如何引用单元格,这些单元格将遵循与下面类似的格式。范围像工作簿中的公式一样被引用,单元格的参数(行、列)从左上角开始。如果您在同一张图纸中,可以放下图纸(“图纸1”)。不在前面,而是使用范围(“A1”).值或单元格(1,1).值

Sheets("Sheet1").Range("A1").Value
Sheets("Sheet1").Cells(1, 1).Value
您可以使用这些值从单元格中取出值或更改单元格值


最后,您需要知道if语句,它通过参数=,>,比较两个输入,记录一个宏并检查生成的代码。不是基于关键字标准,一些样本数据的图像(之前和之后)可能会更好地描述您需要完成的工作。单元格上的值是日期格式。关键词都在同一列(A列)很好的答案,但是,你不应该提及(并教)其他人放下工作表(“Sheet1”)。关闭-这是最常见的问题之一,因为不明确限定工作表(和工作簿)的代码将使用Activesheet,这是大多数问题出现的地方。另外,为了更有用,你的答案应该是一个完整的子函数或函数的形式(如问题中所示)。不知何故,当我运行这段代码时,没有任何反应,没有任何东西被复制。我发现了问题。在开始宏时,之前使用的引用假定光标位于某个位置。我对它进行了编辑,使其在整个列上循环。如果它没有在单元格A1中开始,您将需要更改该引用。奇怪的是,调整范围后也没有反应
Sheets("Sheet1").Range("A1").Value
Sheets("Sheet1").Cells(1, 1).Value
If arg1 = arg2 Then
    'This runs if the condition is true
Else
    'This runs if the condition is false
    'The Else is optional
End If
Sub Macro1()
    Application.ScreenUpdating = False

    Dim x
    Dim y

    Dim y_start
    y_start = 1

    For x = 1 To Range("A1").End(xlDown).Row
        If Cells(x, 1) = "Submissions" Then
            For y = y_start To Cells(y_start, 1).End(xlDown).Row
                If Cells(y, 1) = "Totals" Then
                    Cells(x - 1, 1).Copy Cells(y + 1, 1)
                    Application.CutCopyMode = False
                    y_start = y + 1
                    Exit For
                End If
            Next
        End If
    Next
    Application.ScreenUpdating = True
End Sub