有条件地移动列

我有一系列我正在跟踪的拨款,其中一行是“状态”,可以是“有效”或“无效”。 当状态更改为“不活动”时,我希望将该列复制到另一个标题为“不活动”的表单中。 原件可以被删除,或者我可以创build另一个名为“主动”的活动授权表,并且对于那些更加容易的人来说,也有相同的过程。

我试图修改一些我在互联网上find的类似代码,但是我没有运气。 自从我在大学的基础C +课程已经有好几年了! 我想这可能会更复杂,移动列而不是行,但这是我需要去的方式。

我已经更正了一些你链接的代码。

首先,看看我的原始数据:

before1before2

代码(将前4条注释行中的值更改为您所需的值):

Option Explicit Sub Move_Inactive_to_Other_Sheet() Const sOrigSheet As String = "Sheet1" 'Name of the original sheet Const lStatusRow As Long = 2 'the # of row where you have Status in the original sheet Const sInactSheet As String = "inactive" 'Name of the sheet where inactive data is put Const lInactStartCol As Long = 2 'Column # in the Inactive data sheet where data starts to be put Dim lColCount As Long Dim c As Long Dim i As Long Dim Sh1 As Worksheet, Sh2 As Worksheet Set Sh1 = ThisWorkbook.Worksheets(sOrigSheet) Set Sh2 = ThisWorkbook.Worksheets(sInactSheet) lColCount = Range(Sh1.Cells(1, 1), Sh1.UsedRange).Rows.Count i = lInactStartCol For c = 1 To lColCount If Sh1.Cells(lStatusRow, c).Value = "inactive" Then Sh1.Columns(c).Copy Destination:=Sh2.Columns(i) Sh1.Columns(c).EntireColumn.Delete c = c - 1 i = i + 1 End If Next Sh2.Activate End Sub 

代码运行后的结果:

after1after2