主工作表根据选取列表字段值(数据验证)填充新工作表上的行

时间:2017-12-04 22:20:36

标签: excel excel-vba excel-formula worksheet vba

我目前有一个'Master'工作表,其中包含以下列(简化为了简化)

  • A - 数据类型
  • B - 名称
  • C - 对象

“数据类型”字段具有“数据验证”设置,因此只能输入10个关联值。我的Excel工作簿中有10个相应的“选项卡”,这些选项卡是根据这些选项列表值命名的(所以我总共有11个选项卡,包括Master)。

我希望工作簿设置为当用户在主工作表中输入行时,信息也会根据所选的相应数据类型值填充在10个工作表中的一个上。对于这些非主选项卡,数据需要填充工作表上最高的非填充行。 (例如,如果我在Master上有50行,其中4是Data Type'Custom Field',我想添加第51行,其数据类型为'Custom Field',我希望它填充第5行“自定义字段”选项卡,而不是第51行。)

有谁知道这是否可以设置?非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这样做的事情就是这样做的(这对按钮来说效果很好):

Sub foo()
LastRow = Sheet1.Cells(Sheet1.Rows.Count, "A").End(xlUp).Row 'Check how many rows of data on Sheet1
For i = 1 To LastRow 'loop from first to last row of Sheet1
    SheetName = Sheet1.Cells(i, 1).Value 'Check the first cell for the name of the Sheet it ought to be copied to
    LastRow2 = Sheets(SheetName).Cells(Sheets(SheetName).Rows.Count, "A").End(xlUp).Row + 1 'Check the last row of data on the sheet to be copied into and add one for the next free row
    Sheets(SheetName).Cells(LastRow2, 1).Value = Sheet1.Cells(i, 1).Value ' copy values from Sheet1
    Sheets(SheetName).Cells(LastRow2, 2).Value = Sheet1.Cells(i, 2).Value
    Sheets(SheetName).Cells(LastRow2, 3).Value = Sheet1.Cells(i, 3).Value
Next i
End Sub