使用 Microsoft Excel 中的一系列数据填充列中的空白处

使用 Microsoft Excel 中的一系列数据填充列中的空白处

我有这样一个列表:

    A               B
Student ID     Student Name

20496836       Barnes, Troy
28682693       Bennett, Shirley
               Edison, Annie
28395839       Hawthorne, Pierce
               Perry, Britta
               Nadir, Abed
23234242       Winger, Jeff

我需要按顺序为没有学生 ID 的学生分配学生 ID,从 90000000 开始。换句话说:

    A               B
Student ID     Student Name

20496836       Barnes, Troy
28682693       Bennett, Shirley
90000000       Edison, Annie
28395839       Hawthorne, Pierce
90000001       Perry, Britta
90000002       Nadir, Abed
23234242       Winger, Jeff

我有大约 1000 个内容需要填写,所以我需要找到一种方法来一次性完成。

答案1

要一次性完成此操作,您可以选择需要添加数字的列(在此示例中,选择 A2 到 A8)。

然后点击Ctrl+G并选择Special...> “空白” > 确定。

按下=(不要触碰任何其他东西)并粘贴以下内容:

90000000+COUNTIF($A$2:A3,">="&90000000)

现在,做不是Enter但按Ctrl+ Enter。 之后,您应该一切顺利,但为了避免任何意外,请复制并粘贴 A 列上的值,以便结果不会再次更改。

答案2

我不知道如何使用 VBA 来做到这一点,但你可以通过以下方式做到这一点:

  1. 根据 A 列中的值是否为空 ( =if(A2="", 1, 0))将 C 列设置为 0 或 1
  2. =if(A2="", 90000000+sum($A$2:A2)-1, A2)使用类似 ( )的公式将 D 列设置为 ID

未经测试...

答案3

(答案已于 8 月 21 日编辑:)

要在 VBA 中执行此操作,请将此代码插入宏。关键是 .filldown 方法。

这假设工作表的最后一行位于 B 列,并且 B 列中没有间隙。还假设第二行为空白,以将标题与其余数据分开,如上所示。

'last_row is based on the last name in column B, ignoring the first 2 rows,
'and will be the point at which this macro stops as it works from the top
'down.
'next_row is a look-ahead to see what row needs to be acted on next, as
'the macro progresses, so fills in student IDs in the appropriate spaces
Dim last_row As Long, next_row As Long
last_row = ActiveSheet.Range("B3").End(xlDown).Row

'student_id is the student ID, starting at 90000000
Dim student_id As Long
student_id = 90000000

Cells(3, 1).Select 'starting point in column A, ignoring the first 2 rows

'the meat & potatoes
Do While Selection.Row < last_row
  'if there is a space after the current row, fill in student_id
  If Selection.Row <> Selection.End(xlDown).Row - 1 Then
    'find the next row to advance to before changing anything
    next_row = Selection.End(xlDown).Row
    'put in the student ID >= 90000000 in the space after the
    'current row
    Selection.Offset(1).Value = student_id
    'fill in that student ID in all blank space(s)
    Range(Selection.Offset(1), Selection.End(xlDown).Offset(-1)).FillDown
    'add 1 to the student ID
    student_id = student_id + 1
    Cells(next_row, 1).Select
  Else
  'if no space after current row, progress 1 row
    Selection.Offset(1).Select
  End If
Loop

相关内容