2014-01-20 53 views
0

在Sheet1上,我有三列需要输入数据。三列将始终在同一行中结束,但最后一行将随每组数据而改变。仅包含可见数据的单元格的复制范围

Sheet2获取Sheet1上三列中给出的信息,并将其应用于将其以特定格式存储的公式,我需要将其复制并粘贴到另一个程序的txt文件中。

Sheet2上的公式都包含IF(ISBLANK)公式,只有在Sheet1上输入数据时才填充单元格。如果在Sheet1上没有输入数据,则false参数将返回“”到单元格。

我想要Sheet1上的一个宏或控件按钮,它将复制Sheet2上的A6:B500范围,但前提是单元格使用Sheet1中的数据填充,使IF公式为true。

这是怎么回事的代码:

表1进行了说明,并包含没什么特别的。

表2包含了以下在A6和每5个细胞开始向下直到它到达一个:496

=IF(ISBLANK(Sheet1!A2),"","host "&(INDIRECT(E6))&" {") 

这些公式还继续更新从Sheet 1中单元的位置。通过B10开始在B7有用于从表1至B柱达到B500更新所采取的细胞更多的文字类似的公式,并且这些公式如下:

B7: =IF(ISBLANK(Sheet1!C2),"","hardware ethernet "&(INDIRECT(E7))&";") 
B8: =IF(ISBLANK(Sheet1!B2),"","fixed-address "&(INDIRECT(E8))&";") 
B9: =IF(ISBLANK(Sheet1!A2),"","option host-name "&""""&(INDIRECT(E9))&""";") 
B10: =IF(ISBLANK(Sheet1!A2),"","}") 

到目前为止,我的宏如下所示:

Sub CommandButton1_Click() 
    Dim rng As Range 
    If Not Selection Is Nothing Then 
     Set rng = Sheets("Sheet2").Range("Sheet2!A6:Sheet2!B500").Cells.SpecialCells(xlCellTypeVisible) 
     rng.Copy 
    End If 
End Sub 

我遇到的问题是,无论是输入的内容数据,宏副本的所有单元格范围内的,我有我的后可见数据一堆新的空行。

+0

不知道我是否明白你在做什么。部分问题似乎是确定最后一个已填充的行。真正?如果是这样的话,你可以使用'UsedRange'来达到这个目的。 'maxRow = ActiveSheet.UsedRange.Rows.Count' – David

+0

[只包含可见数据的复制范围的单元格,不包括公式](http://stackoverflow.com/questions/21141204/copy-range-of-cells -that-c​​ontain-only-visible-data-not-including-formula) – pnuts

回答

0

您应该检查字符串的长度,而不是如果它们的类型为Visible。可见性主要与隐藏单元相关联。请尝试以下操作:

Sub CopyNonBlanks() 
    Dim RngToCopy As Range, Cell As Range 
    For Each Cell In Selection 
     If Not RngToCopy Is Nothing Then 
      If Len(Cell.Value) > 0 Then 
       Set RngToCopy = Union(RngToCopy, Cell) 
      End If 
     Else 
      Set RngToCopy = Cell 
     End If 
    Next Cell 
    RngToCopy.Select 'Or .Copy 
End Sub 

这应突出显示评估为""的单元格。见下图:

enter image description here

希望这有助于。

+0

这与我试图实现的接近,但请参阅附加屏幕截图了解更多信息: https://dl.dropboxusercontent.com /u/2989505/sheet1.JPG https://dl.dropboxusercontent.com/u/2989505/sheet2.JPG https://dl.dropboxusercontent.com/u/2989505/sheet2-2.JPG 我有公式从图表2的A6开始,但由于B6不包含数据,因此会跳过该公式。A7也被跳过,B7被选中,因为它在if循环中是真的。当全部说完并完成时,选择不能被复制,因为选择了不连续顺序的单元。在sheet2-2.jpg, – user2554993

+0

之后,我需要从A6:Bxxx中选择的所有东西,这取决于包含大于0的值的最后一行的位置,因此我可以将选定的单元格复制到剪贴板。 – user2554993

相关问题