0

不幸的是,我不是 excel 大师。我有 2000 行必须手动填写的信息。然后我使用 vlookup 将它们分类为带有可以打印的模板的表格。我的问题是我找不到一种方法来减少 vlookup 的手动操作。我希望可以帮助我找到一种不手动添加 250 张纸并为 2000 行信息中的每一行进行 vlookup 的方法。

是否可以自动添加新工作表,甚至告诉 vlookup 查看下一行,就像 php/mysql 的索引一样?

任何帮助表示赞赏。

这是我正在努力实现的一个工作示例。

4

1 回答 1

1

有多种方法可以解决这个问题。我得到了以下工作。

注意:这假设您从 s/sheet 中的一张表开始,该表的主要数据列表从A1

看看这是否适合你...

Sub ParseData()
Dim Entries As Range, entry As Range, cnt As Integer, rowID As Integer, col As Integer, rw As Integer

Set Entries = Worksheets(1).Range("A2:A" & Worksheets(1).Range("A2").End(xlDown).Row)
cnt = 0
rowID = 0

For Each entry In Entries
    cnt = cnt + 1

    If cnt = 1 Or cnt Mod 10 = 1 Then
        Worksheets.Add After:=Worksheets(Worksheets.Count)
        rowID = 1
    End If

    With Worksheets(Worksheets.Count)
        col = IIf(rowID <= 5, 1, 6)
        rw = IIf(rowID <= 5, rowID, rowID - 5)

        .Cells.HorizontalAlignment = xlCenter

        .Cells((8 * rw - 7), col) = "Plan#"
        .Cells((8 * rw - 7), col + 1) = entry
        .Cells((8 * rw - 7), col + 2) = "Vol#"
        .Cells((8 * rw - 7), col + 3) = entry.Offset(0, 2)

            With .Range(.Cells((8 * rw - 7), col), .Cells((8 * rw - 7), col + 3))
                .Font.Bold = True
                .Borders(xlEdgeBottom).LineStyle = xlContinuous
            End With

        .Cells((8 * rw - 7) + 2, col) = "To:"
        .Cells((8 * rw - 7) + 2, col + 1) = entry.Offset(0, 3)

        .Cells((8 * rw - 7) + 4, col) = "Date:"
        .Cells((8 * rw - 7) + 4, col + 1) = entry.Offset(0, 4)
        .Cells((8 * rw - 7) + 4, col + 1).NumberFormat = "m/d/yyyy"

        rowID = rowID + 1
    End With
Next entry
End Sub
于 2013-05-12T19:53:06.533 回答