通过 1 个输入自动填充电子表格中的多行

通过 1 个输入自动填充电子表格中的多行

如果我的工作簿中有 2 张工作表,并且第一张工作表包含类似如下的列表:

包含 3 列的表格(类型、存在?、多个?)

有没有办法根据第一张表上的输入自动填充第二张表上的列表?因此,如果存在该类型,它将添加一个新行,如果有多个,它将​​添加该行数。像这样:

包含 2 个香蕉细胞、1 个葡萄细胞和 2 个橙子细胞的桌子

如果可能的话,那么在添加或删除新输入时,是否也有办法移动 A 列的行?

答案1

借助宏,这相当容易做到。我相信用公式也能做到,但这超出了我的时间。

因此,worksheet_change 宏,我将借用 90%先前的答案

因此,在第一个工作表的代码中(右键单击工作表选项卡并选择显示代码),我输入了以下内容:

Private Sub Worksheet_Change(ByVal Target As Range)

Dim inputRange As Range, entry As Range, outSheet As Worksheet, oCN As Long, i As Long, outCol As String

Set inputRange = ActiveSheet.Range("A1:C6")
Set outSheet = Worksheets(2)
outCol = "A"

oCN = Columns(outCol).Column
If Not Application.Intersect(Range(Target.Address), inputRange) Is Nothing Then
    outSheet.Range(outCol & "2:" & outCol & outSheet.Cells(Rows.Count, oCN).End(xlUp).Offset(1, 0).Row).Value = ""
    For Each entry In inputRange

        '--- This is where it's new---

        If UCase(entry.Value) = "X" Then
            For i = 1 To entry.Offset(0, 1).Value
                outSheet.Range(outCol & outSheet.Cells(Rows.Count, oCN).End(xlUp).Offset(1, 0).Row).Value = entry.Offset(0, -1).Value
            Next i
        End If

        '--- And that's all really ---

    Next entry
End If

End Sub

因此,流程应该是,将其与列表一起放入工作表中,并进行inputRange相应更改。然后将 outSheet 和 outCol 设置为要打印的位置(现在默认为工作表编号 2,单元格 A2 及以下)。

在这方面还有改进的空间,既可以实现更动态的代码,也可以实现更高效的代码。还有错误处理等,但这应该是一个好的开始。

在此处输入图片描述

相关内容