【问题标题】:Populate rows based on inputs on another sheet in EXcel根据 EXcel 中另一张工作表上的输入填充行
【发布时间】:2018-01-31 11:47:32
【问题描述】:

我浏览了各种示例,但不符合我的需要。 我需要根据多个单元格填充工作表。 例如,在工作表 1 C5 单元格中我的值为 2,在 c6 中我有 5,在 c7 中我有 8。 然后在工作表 2 中,我将在 a 列中创建行作为“e001,e002”,然后在单元格 a3 中创建“E101,....E105”,然后是“E401....E408” 如果它不使用 vba 会更好,因为我还没有与之交谈。

Sample sheet

Sample sheet 2

以下是我编写的代码,但没有达到我的预期。

Public Sub InsertTagNumbers()  
    Dim ehv_breaker As Long  
    Dim row_no As Long  
    Dim breaker11kv As Long  
    Dim breaker33kv As Long  
    Dim breaker415V As Long  
    Dim breaker415E As Long  
    Dim carry11 As Long  
    Dim carry33 As Long  
    Dim carry415 As Long  
    Dim counter1 As Integer  
    Dim counter2 As Integer  

    ehv_breaker = 0
    row_no = 5
    Sheets("Sheet2").Range("b5").Select

    For ehv_breaker = 1 To Sheets("Sheet1").Range("c6").Value
        Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(6, 4) & 
        Format$(ehv_breaker, "00")
        ActiveCell.Offset(1, 0).Select
        row_no = row_no + 1
    Next ehv_breaker

    For breaker11kv = 1 To Sheets("Sheet1").Range("c7").Value
        Sheets("Sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(7, 4) & 
        Format$(breaker11kv, "00")
        ActiveCell.Offset(1, 0).Select
        row_no = row_no + 1
        Next breaker11kv
    carry11 = breaker11kv

    For breaker33kv = 1 To Sheets("Sheet1").Range("c8").Value
        Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(8, 4) & 
        Format$(breaker33kv, "00")
        ActiveCell.Offset(1, 0).Select
        row_no = row_no + 1
        Next breaker33kv
    carry33 = breaker33kv

    For breaker415V = 1 To Sheets("Sheet1").Range("c9").Value
        Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(9, 4) & 
        Format$(breaker415V, "00")
        ActiveCell.Offset(1, 0).Select
        row_no = row_no + 1
        Next breaker415V
    carry415 = breaker415V

    For breaker415E = 1 To Sheets("Sheet1").Range("c10").Value
        Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(10, 4) & 
        Format$(breaker415E, "00")
        ActiveCell.Offset(1, 0).Select
        row_no = row_no + 1
    Next breaker415E

    'For breaker11kv > breaker11kv To Sheets("Sheet1").Range("c11").Value + carry11
    Do
        Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(11, 4) & 
        Format$(breaker11kv, "00")
        ActiveCell.Offset(1, 0).Select
        row_no = row_no + 1
        breaker11kv = breaker11kv + 1
    Loop Until breaker11kv > Sheets("Sheet1").Cells("c11").Value + carry11
    'Loop Until breaker11kv > Sheets("Sheet1").cells(c11").Value + carry11
    'Next breaker11kv

    For breaker33kv = breaker33kv To Sheets("Sheet1").Range("c12").Value + carry33
        Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(12, 4) & 
        Format$(breaker33kv, "00")
        ActiveCell.Offset(1, 0).Select
        row_no = row_no + 1
    Next breaker33kv

    For breaker415V = breaker415V To Sheets("Sheet1").Range("c13").Value + carry415
        Sheets("sheet2").Cells(row_no, 2).Value = Sheets("sheet1").Cells(13, 4) & 
        Format$(breaker415V, "00")
        ActiveCell.Offset(1, 0).Select
        row_no = row_no + 1
    Next breaker415V

    MsgBox "ehv_breaker=" & ehv_breaker
    Application.ScreenUpdating = False
End Sub

【问题讨论】:

  • 欢迎来到 StackOverflow。请注意,这不是免费的代码编写服务。然而,我们渴望帮助其他程序员(和有志者)编写自己的代码。请阅读How do I Ask a Good Question 上的帮助主题。之后,请使用您迄今为止编写的 VBA 代码更新您的问题,以完成您希望完成的任务。我们会在这里等你。随时准备协助并帮助您完成您的代码。请注意,您需要 VBA 来自动执行此任务。所以,你应该开始学习一些...
  • 很抱歉没有更新。但是我已经添加了我正在工作的代码,希望有人能提供帮助。

标签: excel


【解决方案1】:

你的第一个循环看起来不错,然后你有Do .. Loop Until,这有点不寻常。

after 看起来一团糟的循环:例如:

For breaker33kv = breaker33kv To Sheets("Sheet1").Range("c12").Value + carry33

如何启动一个未初始化的变量作为它本身?它应该从 1 开始吗?

For breaker33kv = 1 To Sheets("Sheet1").Range("c12").Value

我也不太确定carry 变量的用途是什么?如果计划是将同步和非同步断路器组合在一起,那么您的代码应该在 Sheet1!7:7 之后直接处理 Sheet1!11:11,然后再继续到 Sheet1!8:8

【讨论】:

    猜你喜欢
    • 2018-03-08
    • 2016-05-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多