重复命令并增加范围

时间:2014-11-20 18:50:34

标签: excel vba excel-vba

我几乎没有VBA的经验。 我在" B21"我已经在同一行复制到" Z21" 我希望这些单元格的结果显示在一个列中的不同表单上,从#34开始; B2"并重复直到它到达终点。 这就是我的目的。

Sheets("Barlist").Range("B2").Value = "B21"

或者我在" B21"我复制过来重复自己的是:

=IF((COLUMN()-1)<$B$16,ROUND(TAN(RADIANS($B$5))*(($B$6)-($B$15*(COLUMN()-2))),2)+($B$11-0.33),IF((COLUMN()-1)=$B$16,$B$18,""))

所以,如果我可以告诉我重复这个功能,请按下列#B; B&#34;直到它返回一个应该起作用的空白结果。

2 个答案:

答案 0 :(得分:0)

你到底想要做什么? 现在你的代码只需输入值&#34; B21&#34;在表格Barlist上的单元格B2中。

如果要添加对该单元格的引用,可以使用Sheets("Barlist").Range("B2").FormulaR1C1="R21C2"

虽然我根本没有看到任何使用VBA的理由。如果您想要动态范围,因此它链接到原始范围,您只需使用Transpose Function即可。

对于您的示例,请在Barlist表单上选择单元格B2到B26。按F2(应进入单元格B2)并输入公式=TRANSPOSE(SHEET!B21:Z21).这是一个数组函数,所以你不要按Enter键,你必须同时按CTRL + SHIFT + ENTER输入它。 Excel将自动在公式周围添加小花括号{},以便您知道它是一个数组公式。

如果您想要静态值,请选择要复制的范围B21:Z21,然后转到Barlist表单上的单元格B2并右键单击&gt;粘贴特殊并使用&#34; trasnpsose&#34;选项

答案 1 :(得分:0)

此代码将使用数据循环遍历从B21到第21行的最后一列的所有单元格,如果单元格为空,则需要添加您想要对该单元格执行的操作的代码。否则,单元格将从B2开始进入“Barlist”并向下运行(每次使用下一个空白行)

Sub NAMEOFSUB()

Dim LastCol As Long
Dim CurCol As Long
Dim DestRow As Long

LastCol = Sheets("CURRENT SHEET NAME").Cells(21, Columns.Count).End(xlToLeft).Column

For CurCol = 2 to LastCol
    If Sheets("CURRENT SHEET NAME").Cells(21, CurCol).Value = "" Then
        'Do Something with your blank cell such as add a .Formula
    Else
        DestRow = Sheets("Barlist").Range("B" & Rows.Count).End(xlUp).Row + 1
        Sheets("Barlist").Range("B" & DestRow).Value = Sheets("CURRENT SHEET NAME").Cells(2, CurCol).Value
    End If
Next CurCol

End Sub