Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/27.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 复制大于零的单元格,并在同一单元格中粘贴值_Excel_Vba - Fatal编程技术网

Excel 复制大于零的单元格,并在同一单元格中粘贴值

Excel 复制大于零的单元格,并在同一单元格中粘贴值,excel,vba,Excel,Vba,我有一张表格,上面有公式,和另一张表格连在一起。这些公式根据列顶部的日期是否与单个单元格中的日期匹配(周结束日期),从另一个表中获取数据。我希望能够仅自动复制值大于0的单元格,然后将它们粘贴回与值相同的单元格中。我使用了下面的公式来尝试实现这一点,但它并没有达到我想要的效果。温柔点,我充其量只是个新手 Sub CopyC() Dim SrchRng As Range, cel As Range Set SrchRng = Range("Table4") For Each cel In SrchR

我有一张表格,上面有公式,和另一张表格连在一起。这些公式根据列顶部的日期是否与单个单元格中的日期匹配(周结束日期),从另一个表中获取数据。我希望能够仅自动复制值大于0的单元格,然后将它们粘贴回与值相同的单元格中。我使用了下面的公式来尝试实现这一点,但它并没有达到我想要的效果。温柔点,我充其量只是个新手

Sub CopyC()
Dim SrchRng As Range, cel As Range
Set SrchRng = Range("Table4")
For Each cel In SrchRng
    If cel.Value > 0 Then
        cel.Copy
    cel.PasteSpecial xlPasteValues
    End If
Next cel
End Sub
预期输出:仅复制我的表中大于0的单元格并粘贴为值

目标:在空白单元格中保留公式

从上面得到的结果:一个单元格一个单元格地缓慢推进,复制并粘贴到所有单元格中,包括空白和0值,直到停止为止

尝试一下:

Sub-CopyC()
尺寸SrchRng As范围,cel As范围
设置SrchRng=范围(“表4”)
对于SrchRng中的每个cel
如果为数值(单元格值)且单元格值>0,则
单元值=单元值
如果结束
下一个细胞
端接头
编辑:添加一个替代方法,使用数组循环数据,这应该会快一点:

Sub-CopyC()
尺寸SrchRng作为范围:设置SrchRng=范围(“表4”)
Dim arrSearch作为变量:arrSearch=SrchRng
变暗fRow为Long:fRow=SrchRng.Cells(1,1).Row-1
将fCol设置为长:fCol=SrchRng.Cells(1,1)。列-1
变暗R为长,C为长
对于R=LBound(arrSearch)到UBound(arrSearch)
对于C=LBound(arrSearch,2)到UBound(arrSearch,2)
如果IsNumeric(arrSearch(R,C))和arrSearch(R,C)>0,则单元格(R+fRow,C+fCol)。值=arrSearch(R,C)
下一个C
下一个R
端接头

我用一个包含2k个公式的测试文件和一个简单的K1*L1公式运行了这个程序,它运行得很快,完全按照您的要求运行。也许你可以发布一个数据和公式的例子?表4中有多少行?
cel.Value>0
也会检查字符串,这些字符串是。。。嗯,大于0。@mooseman,如果不是专有的,我肯定会共享我正在使用的表。FAB的建议很有效。感谢您的支持,他的工作非常完美@FAB!感觉就像我的头撞到了墙上。很高兴我请求帮助。非常感谢。我使用了数组选项仅供参考