【发布时间】:2015-05-21 02:47:20
【问题描述】:
我在下面粘贴了整个宏,但这是重要的部分。
Range("B2:B10000").Value = Range("B2").Offset(-1, 1).Value
Range("D2:D10000").Value = Range("D2").Offset(-1, 1).Value
Range("F2:F10000").Value = Range("F2").Offset(-1, 1).Value
Range("H2:H10000").Value = Range("H2").Offset(-1, 1).Value
它按原样工作,只是它创建了不必要的数据,因为我不知道如何在范围对象中使用变量名。我的范围目前是硬编码的,例如 ("A1:A1000"),而我希望它类似于 ("A1:A & LastRow)。
我还必须明确地调用要复制的列名,因为该范围不会接受像 ("currentColumn & 1:currentColumn & LastRow) 这样的变量名。
有没有办法将变量名称用作范围对象的一部分,以便我们可以在循环中使用它们?
Sub prepareWorkbook()
Dim wbk As Workbook
Set wbk = ThisWorkbook
Dim wks As Worksheet
Set wks = wbk.ActiveSheet
Dim colx As Long
Dim ColumnCount As Long
Dim MySheetName As String
MySheetName = "Import"
LastRow = sht.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row
'copy the worksheet and rename it before editing
Sheets(1).Copy After:=Sheets(1)
ActiveSheet.Name = MySheetName
'identify the Id column and move it to 1st column
Dim answer As Variant
Dim IdColumn As Range
answer = Application.InputBox("Enter Letter of Id column")
If Columns(answer).Column = 1 Then
Else
'cut Id column from current location and insert it at column index 1
Columns(answer).Select
Selection.Cut
Columns("A:A").Select
Selection.Insert Shift:=xlToRight
End If
'trim the PartNumber column of any trailing spaces
Dim c As Range
For Each c In Range("A1:A10000")
c.Value = Application.Trim(Replace(c.Value, Chr(160), Chr(32)))
Next
' insert column every other column
' Loop through number of columns.
ColumnCount = Application.WorksheetFunction.CountA(Rows(1)) * 2
'step 2 means skip every other
For colx = 2 To ColumnCount Step 2
Columns(colx).Insert Shift:=xlToRight
Next
Range("B2:B10000").Value = Range("B2").Offset(-1, 1).Value
Range("D2:D10000").Value = Range("D2").Offset(-1, 1).Value
Range("F2:F10000").Value = Range("F2").Offset(-1, 1).Value
Range("H2:H10000").Value = Range("H2").Offset(-1, 1).Value
wks.Cells.EntireColumn.AutoFit
MsgBox ("Done")
结束子
【问题讨论】:
-
您不能在没有用户干预的情况下按名称找到 PartNumber 列吗?
-
您是想将一个值(例如
Range("B2").Offset(-1, 1).Value)放入一列单元格中,还是希望逐行传输偏移-1 行的值? -
partNumber 字段并不总是第一列,也不总是命名为 partNumber