根据特定的单元格值将数据从一个工作表传输到另一工作表

时间:2019-03-22 13:33:23

标签: excel vba

如何根据特定的单元格值将数据从工作表传输到另一个工作表? 我尝试了几种不同的VBA代码,但我必须诚实。我只有VBA代码的基本知识。

情况是,我有一个工作表,它是大量信息的寄存器,并且我想基于同一行中的一个特定单元格值从每一行传输特定数据。 例如,在L列中,我可以通过下拉菜单选择“是-紧急”,“是”和“否”。 如果是“是-紧急”或“是”,我希望它自动将某些数据传输到两个单独的工作表中。 例如,同一行中具有“是”的单元格A,C,E和G并在单独的工作表中转移到B,D,E和F。

仅供参考,在Excel工作簿中,所有工作表中都有带过滤器的标题。正是这些过滤器特别困扰着我。 我使用的是Microsoft Office 2010。

我希望有人能对此提供帮助。

1 个答案:

答案 0 :(得分:0)

我相信这样会起作用:

'declaring variables
Dim sheet1 As Worksheet
Dim sheet2 As Worksheet
Dim sheet3 As Worksheet
Dim new_row As Long

'setting sheets
Set sheet1 = ThisWorkbook.Sheets("Sheet 1")
Set sheet2 = ThisWorkbook.Sheets("Sheet 2")
Set sheet3 = ThisWorkbook.Sheets("Sheet 3")

'loop (starts at row 2 because of headers)
For Each cell In sheet1.Range(sheet1.Cells(2, 12), sheet1.Cells(Rows.Count, 12).End(xlUp))
    If cell.Value = "Yes - Urgent" Or cell.Value = "Yes" Then
        'first empty cell in sheet 2 (assuming column A always has a value)
        new_row = sheet2.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        'sheet1-A to sheet2-B
        sheet2.Cells(new_row, 2) = sheet1.Cells(cell.Row, 1)
        'sheet1-C to sheet2-D
        sheet2.Cells(new_row, 4) = sheet1.Cells(cell.Row, 3)
        'sheet1-E to sheet2-E
        sheet2.Cells(new_row, 5) = sheet1.Cells(cell.Row, 5)
        'sheet1-G to sheet2-F
        sheet2.Cells(new_row, 6) = sheet1.Cells(cell.Row, 7)
    ElseIf cell.Value = "No" Then
        'first empty cell in sheet 3 (assuming column A always has a value)
        new_row = sheet3.Cells(Rows.Count, 1).End(xlUp).Offset(1, 0)
        'sheet1-A to sheet3-B
        sheet3.Cells(new_row, 2) = sheet1.Cells(cell.Row, 1)
    End If
Next cell