【问题标题】:Excel VBA MacroExcel VBA 宏
【发布时间】:2009-03-26 12:08:47
【问题描述】:

列表:- “问题表”(工作表)。

我有一个 Excel 表格,它代表每天大小不同的问题列表(行)(例如,更多或更少的行); 每一行都被分配了一个名称; 分配的名称始终在“问题表”的同一列“M”中; 一个单独的作业名称不一定每天都出现,也可能在某一天出现多次(不止一行);

我已经有一个宏可以创建作业名称的唯一列表(工作表),其中出现在问题表 M 列中的每个名称都在“唯一列表”工作表中记录一次; 相同的宏为每个唯一出现的分配名称创建一个新工作表(在同一工作簿中)。 分配名称会自动记录在新的个人工作表选项卡中。

必填:- 一个宏,将检查主“问题表”的 M 列; 对于在问题表的 M 列中出现特定作业名称的每一行/问题,将作业名称与同名的工作表匹配,然后将整行的详细信息从“问题表”复制并粘贴到第一个现有工作簿中正确(相同的指定名称)工作表的空白行。 必须对问题表中的每一行重复此例程。

【问题讨论】:

  • 是否有特殊原因迫使您使用 Excel?像这样的事情在 SQL 中很容易完成,而数据库是我怀疑数据的来源。也许这可以直接在数据库中解决?
  • 数据先进行修改,然后进行相当多的格式化,在邮件拍摄之前,我被告知格式化阶段使用SQL会出现问题,我已经知道这些步骤可以在 VBA 中完成,因为我已经实现了这一点,但我现在被困在邮件截图中
  • 毫无疑问,这在 VBA 中是可能的。但是锻炼起来会很痛苦。通常你会在 SQL 中选择正确的东西,然后把它放在 Excel 中并格式化它/无论如何。不是先放到Excel中再尝试在VBA中模仿SQL查询...

标签: vba excel


【解决方案1】:

如果顺序无关紧要,这可能是您最好的选择

Sub x()
    Dim rngProbs As Range
    With ThisWorkbook.Worksheets("Problem Sheet")
        Set rngProbs = .Range("M1", .Range("M1").End(xlDown))
    End With

    Dim r As Range


    For Each r In rngProbs
        r.EntireRow.Copy
        ThisWorkbook.Worksheets(r.Text).Rows(1).EntireRow.Insert
    Next r

End Sub

【讨论】:

  • Answer 完美运行,将 Rows(1) 更改为 Rows(2) 以避免标题栏已在每张工作表中到位。
猜你喜欢
  • 2011-01-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-10
  • 2015-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多