Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
VBA-基于另一列在同一行上提取值_Vba_Excel - Fatal编程技术网

VBA-基于另一列在同一行上提取值

VBA-基于另一列在同一行上提取值,vba,excel,Vba,Excel,我需要一个宏,它将向下滚动B列,直到它的值超过6。然后,在通过的第一个值上,从A列取该行上的值(我将此值称为X),然后转到同一本书中的另一页,在C列大于或等于X后插入3行。我对vba非常陌生,不知道我在做什么,但我正处于时间紧迫期,需要一些帮助。我不知道这是否有帮助,但我写了一些超级伪代码,也许可以解释它。(我不仅需要一个X,还需要一个Y,以便在第二页的另一个位置插入3行) 我能找到的最接近这一点的东西是: 但是,这并不是我所需要的。我感谢你提供的任何帮助。祝你有愉快的一天 如果我答对了你的问题

我需要一个宏,它将向下滚动B列,直到它的值超过6。然后,在通过的第一个值上,从A列取该行上的值(我将此值称为X),然后转到同一本书中的另一页,在C列大于或等于X后插入3行。我对vba非常陌生,不知道我在做什么,但我正处于时间紧迫期,需要一些帮助。我不知道这是否有帮助,但我写了一些超级伪代码,也许可以解释它。(我不仅需要一个X,还需要一个Y,以便在第二页的另一个位置插入3行)

我能找到的最接近这一点的东西是:
但是,这并不是我所需要的。我感谢你提供的任何帮助。祝你有愉快的一天

如果我答对了你的问题,这个应该可以。如果工作表中还有非数值,则此操作将失败

Sub DoIt()
    Dim i As Long
    Dim x As Double
    Dim Worksheet1 As Worksheet
    Dim Worksheet2 As Worksheet
    Dim ColumnA As Long
    Dim ColumnB As Long
    Dim ColumnC As Long

    Set Worksheet1 = ActiveWorkbook.Worksheets("Sheet1") ' Change name of sheet if necessary
    Set Worksheet2 = ActiveWorkbook.Worksheets("Sheet2") ' Change name of sheet if necessary
    ColumnA = 1  ' Change if you want other columns, 1 = A-column, 2 = B etc
    ColumnB = 2
    ColumnC = 3


    For i = 1 To Worksheet1.UsedRange.Rows.Count
        If Worksheet1.Cells(i, ColumnB).Value > 6 Then
            x = Worksheet1.Cells(i, ColumnA).Value
            Exit For
        End If
    Next

    If x = 0 Then MsgBox "No value greater then 6 found in colum b in sheet 1"

    For i = 1 To Worksheet2.UsedRange.Rows.Count
        If Worksheet2.Cells(i, ColumnC).Value >= x Then
            Worksheet2.Rows(i + 1).Insert
            Worksheet2.Rows(i + 1).Insert
            Worksheet2.Rows(i + 1).Insert
            Exit Sub
        End If
    Next

    MsgBox "No value greater then " & x & " found in column C in sheet 2"
End Sub

我不太确定我是否正确理解了这一点。首先,您需要滚动浏览B列(从第1行到第2行?),当您发现某个值为6或更多时,将该值复制到该值的左侧(a列),并将该值插入C+3=F列的另一张表中?在第一行中,C列中的值大于或等于X值(来自sheet1 A列)?对不起,我试图尽可能地解释。但是,你说的很接近。在A列中找到值后,我需要取该值(X),转到另一个工作表,并在第二个工作表b列中的值超过值(X)后插入3个空行。非常欢迎。如果你把这个问题标记为已回答,我将不胜感激,这样这个问题或多或少是“封闭的”。对不起,这是我第一次真正与社区互动。
Sub DoIt()
    Dim i As Long
    Dim x As Double
    Dim Worksheet1 As Worksheet
    Dim Worksheet2 As Worksheet
    Dim ColumnA As Long
    Dim ColumnB As Long
    Dim ColumnC As Long

    Set Worksheet1 = ActiveWorkbook.Worksheets("Sheet1") ' Change name of sheet if necessary
    Set Worksheet2 = ActiveWorkbook.Worksheets("Sheet2") ' Change name of sheet if necessary
    ColumnA = 1  ' Change if you want other columns, 1 = A-column, 2 = B etc
    ColumnB = 2
    ColumnC = 3


    For i = 1 To Worksheet1.UsedRange.Rows.Count
        If Worksheet1.Cells(i, ColumnB).Value > 6 Then
            x = Worksheet1.Cells(i, ColumnA).Value
            Exit For
        End If
    Next

    If x = 0 Then MsgBox "No value greater then 6 found in colum b in sheet 1"

    For i = 1 To Worksheet2.UsedRange.Rows.Count
        If Worksheet2.Cells(i, ColumnC).Value >= x Then
            Worksheet2.Rows(i + 1).Insert
            Worksheet2.Rows(i + 1).Insert
            Worksheet2.Rows(i + 1).Insert
            Exit Sub
        End If
    Next

    MsgBox "No value greater then " & x & " found in column C in sheet 2"
End Sub