1

我有一个不寻常的问题。我有一个电子表格,其中包含 A:J 列的数据。我想再添加一列 K,并用员工姓名填充它。这个想法是为每个工作人员分配一个电子表格。分配的数字已经在另一张表中计算出来,并在此电子表格的 M 和 N 列中引用。M2 及以下包含员工姓名,N2 及以下包含其相应的分配。

我的问题是弄清楚如何用这些数据填充 K 列。例如 APerson (M2) 的分配为 23(N2),我想用 APerson 的名称填充 K2(第 1 行是标题)到 K24。之后,我想为 APerson2(M3) 分配 15(N3),然后从 K25 开始。我感觉它会涉及循环,但我的 VBA 知识不完整,环顾四周,我只能找到填充增量数字的循环。

编辑:抱歉没有附加任何文件;这最初是通过我的手机发布的,因为我的工作阻止了 stackoverflow。我打印了我正在进行的代码,所以我会尽快输入它。

编辑2:到目前为止,这是我的代码。我有分配工作 - 有点。

Sub Allocate()
name1 = Range("M2").Value
countto = Range("N2").Value

Range("K1").Select
 Do
    ActiveCell.Offset(1, 0).Select
    Loop Until IsEmpty(ActiveCell.Value)
    For Counter = 1 To countto
        ActiveCell.Value = name1
        ActiveCell.Offset(1, 0).Select
    Next Counter

name2 = Range("M3").Value
countto2 = Range("N3").Value

Range("K1").Select
 Do
    ActiveCell.Offset(1, 0).Select
Loop Until IsEmpty(ActiveCell.Value)
    For Counter2 = 1 To countto2
        ActiveCell.Value = name2
        ActiveCell.Offset(1, 0).Select
    Next Counter2
End Sub

有没有什么方法可以自动为大量(20 多名)员工分配“name1”、“name2”等,而无需手动输入全部内容,或者任何关于如何提高效率的提示?

4

1 回答 1

1

正如我看到您对 VB 有一些基本知识并且我有点生疏,这是一项匆忙的工作,直到有人给您一个更好的答案。它假定在​​您的源工作表上,每行连续有一个不同的名称,然后是一个空白行。

enter code here

Sub Allocate()
i3 = 2     'counter for DESTINATION sheet
i1 = 2     'counter for SOURCE sheet

Do until sheets(source).cells(i1, N#).value = ""     'until the last name
    NAME = sheets(source).cells(i1, N#).value         'N#: column NUMBER containing names
    ENTRIES = Sheets(Source).cells(i1, C#).value      'C#: column NUMBER containing numbers
    For i2 = 1 to ENTRIES
        Sheets(Dest).ceklls(i3, 11).value = NAME             '11 is column K
        i3 = i3 + 1
    Next
i1 = i1 + 1
Loop
于 2012-11-27T16:52:50.463 回答