循环复制我的公式,直到我行的最后一个单元格
Loop that replicate my formula until last cell of my row
我的目标是有一个公式,用前面的问题填充空单元格,直到最后一个非空单元格(见图)
范围是我行的最后一个非空单元格。
现在我的代码如下所示:
Sub Range_End_Exemple()
Dim cell_target As Range
ActiveCell.FormulaR1C1 = "=+IF(ISBLANK(R[-2]C)=TRUE,RC[-1],R[-2]C)"
Set cell_target = Worksheets("dataset Feedback forms").Range(Cells(1, Columns.Count).End(xlToLeft).Select Type:xlFillDefault
End Sub
感谢您的帮助,如果您有任何建议。
这将执行您希望从图像中得到的结果:
Sub Propagate()
Dim lastCol As Integer
With Worksheets("dataset Feedback forms")
lastCol = .Cells(2, .Columns.Count).End(xlToLeft).Column
With .Cells(1, 4).Resize(1, lastCol - (4 - 1)).SpecialCells(xlCellTypeBlanks)
.FormulaR1C1 = "=RC[-1]"
.Value2 = .Value2
End With
End With
End Sub
所以我会想象这样的事情:
lrow = Cells.Find("*", Cells(1, 1), xlValues, xlPart, xlByColumns, xlPrevious, False).Column ' <-- this gives you the last column blank
nextblank = Cells.Find("", Cells(1, 1), xlFormulas, xlByColumns, xlNext, False).Column ' <-- this gives you the FIRST blank column number
ltr = Split(Cells(1, nextblank - 1).Address, "$")(1) ' <-- this gives you the letter
aux = Range(ltr & "1") ' <-- this is the value you need to copy
在第一个 nextblank 语句之后,您需要使用它来迭代
nextblank = Cells.Find("", Cells(1, nextblank), xlFormulas, xlByColumns, xlNext, False).Column
使用这些值 -> lrow 不会改变,它是你的最终目的地
复制后 nextblank、ltr 和 aux 值发生变化
希望对您有所帮助!
下面的子内容仅基于您所附的图片。
Sub test()
Dim LastCol As Range
Dim rg As Range
Dim cell As Range
With ActiveSheet
Set LastCol = .Cells(2, Columns.Count).End(xlToLeft).Offset(-1, 0)
Set rg = .Range("D1", LastCol)
For Each cell In rg.SpecialCells(xlCellTypeConstants)
If cell.End(xlToRight).Column = .Columns.Count Then
Range(cell, LastCol).Value = cell.Value
Else
Range(cell, cell.End(xlToRight).Offset(0, -1)).Value = cell.Value
End If
Next
End With
End Sub
代码假定“header-2”中没有任何变化。
“header-1”将从单元格 D1 开始。
有多少“header-1 类型”未知。
“header-2”中使用的最后一列未知。
过程:
它获取“header-2”中使用的最后一列的单元格,然后将该行偏移到 -1,然后将其作为 LastCol 变量。 LastCol 单元格用于标记“header-1”的结尾。
然后它将“header-1”的范围获取到 rg 变量中。
然后它循环具有值的 rg 的单元格,
将单元格复制到右边的最后一个空单元格(在下一个 header 类型的“header-1”之前)。
由于最后一个 header 类型的“header-1”将没有边框,因此它将检查右侧最后一个空单元格列的值是否 = 工作表列计数 .. . 然后它使用 LastCol 变量作为边框。
根据看到你的图片附件,我无法理解你想要的是:你为你的“header-1”使用了一个公式?
我的目标是有一个公式,用前面的问题填充空单元格,直到最后一个非空单元格(见图)
范围是我行的最后一个非空单元格。
现在我的代码如下所示:
Sub Range_End_Exemple()
Dim cell_target As Range
ActiveCell.FormulaR1C1 = "=+IF(ISBLANK(R[-2]C)=TRUE,RC[-1],R[-2]C)"
Set cell_target = Worksheets("dataset Feedback forms").Range(Cells(1, Columns.Count).End(xlToLeft).Select Type:xlFillDefault
End Sub
感谢您的帮助,如果您有任何建议。
这将执行您希望从图像中得到的结果:
Sub Propagate()
Dim lastCol As Integer
With Worksheets("dataset Feedback forms")
lastCol = .Cells(2, .Columns.Count).End(xlToLeft).Column
With .Cells(1, 4).Resize(1, lastCol - (4 - 1)).SpecialCells(xlCellTypeBlanks)
.FormulaR1C1 = "=RC[-1]"
.Value2 = .Value2
End With
End With
End Sub
所以我会想象这样的事情:
lrow = Cells.Find("*", Cells(1, 1), xlValues, xlPart, xlByColumns, xlPrevious, False).Column ' <-- this gives you the last column blank
nextblank = Cells.Find("", Cells(1, 1), xlFormulas, xlByColumns, xlNext, False).Column ' <-- this gives you the FIRST blank column number
ltr = Split(Cells(1, nextblank - 1).Address, "$")(1) ' <-- this gives you the letter
aux = Range(ltr & "1") ' <-- this is the value you need to copy
在第一个 nextblank 语句之后,您需要使用它来迭代
nextblank = Cells.Find("", Cells(1, nextblank), xlFormulas, xlByColumns, xlNext, False).Column
使用这些值 -> lrow 不会改变,它是你的最终目的地
复制后 nextblank、ltr 和 aux 值发生变化
希望对您有所帮助!
下面的子内容仅基于您所附的图片。
Sub test()
Dim LastCol As Range
Dim rg As Range
Dim cell As Range
With ActiveSheet
Set LastCol = .Cells(2, Columns.Count).End(xlToLeft).Offset(-1, 0)
Set rg = .Range("D1", LastCol)
For Each cell In rg.SpecialCells(xlCellTypeConstants)
If cell.End(xlToRight).Column = .Columns.Count Then
Range(cell, LastCol).Value = cell.Value
Else
Range(cell, cell.End(xlToRight).Offset(0, -1)).Value = cell.Value
End If
Next
End With
End Sub
代码假定“header-2”中没有任何变化。
“header-1”将从单元格 D1 开始。
有多少“header-1 类型”未知。
“header-2”中使用的最后一列未知。
过程:
它获取“header-2”中使用的最后一列的单元格,然后将该行偏移到 -1,然后将其作为 LastCol 变量。 LastCol 单元格用于标记“header-1”的结尾。
然后它将“header-1”的范围获取到 rg 变量中。
然后它循环具有值的 rg 的单元格,
将单元格复制到右边的最后一个空单元格(在下一个 header 类型的“header-1”之前)。
由于最后一个 header 类型的“header-1”将没有边框,因此它将检查右侧最后一个空单元格列的值是否 = 工作表列计数 .. . 然后它使用 LastCol 变量作为边框。
根据看到你的图片附件,我无法理解你想要的是:你为你的“header-1”使用了一个公式?