首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Excel宏复制粘贴条件

Excel宏复制粘贴条件
EN

Stack Overflow用户
提问于 2017-01-12 09:09:24
回答 2查看 746关注 0票数 0

我在excel中有一个宏,它可以工作,但并不像我想要的那样完美,不能找到解决方案,需要你的想法。

下面是它所做的工作:从设置复制粘贴值到计算中的第一个非空单元格sheet.It to ok

以下是我的代码:

代码语言:javascript
运行
复制
Sub support()
Sheets("Settings").Select
Range("S411:S421").Select
Selection..Copy
Sheets("Calculation").Select
Range("C4").Select
Range("C4").End(xlDown).Offset(1, 0).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
    :=False, Transpose:=False
End Sub

但是,我只想将非空单元格和值复制到这10行之间的计算页中,这些单元格和值不是0。(所以我应该跳过复制0和空单元格)有什么简单的技巧可以指导我吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-12 10:16:07

你可以用AutoFilter()

代码语言:javascript
运行
复制
Sub support()
    With Sheets("Settings").Range("S410:S421") '<--| reference wanted range and the cell above it as the "header"
        If IsEmpty(.Cells(1, 1)) Then .Cells(1, 1).Value = "dummyheader" '<--| add a "dummy" header value if it's empty
        .AutoFilter Field:=1, Criteria1:="<>", Operator:=xlAnd, Criteria2:="<>0" '<--| filter referenced range with "not empty" and "not zero" values
        If Application.WorksheetFunction.Subtotal(103, .Resize(, 1)) > 1 Then
            .Resize(.Rows.Count - 1, 1).Offset(1).SpecialCells(xlCellTypeVisible).Copy
            Sheets("Calculation").Range("C4").End(xlDown).Offset(1, 0).PasteSpecial xlPasteValues
            Application.CutCopyMode = False
        End If
        If .Cells(1, 1).Value = "dummyheader" Then .Cells(1, 1).ClearContents '<--| remove "dummy" header, if there
        .Parent.AutoFilterMode = False
    End With
End Sub
票数 0
EN

Stack Overflow用户

发布于 2017-01-12 09:34:59

您想每次都从Range("S411:S421")复制到Range("C4")..->吗?或者这些范围可以改变?

试着:

代码语言:javascript
运行
复制
    Public Sub CommandButton1_Click()
j = 4
For i = 411 To 421

If ThisWorkbook.Sheets("Settings").Cells(i, 19) <> 0 And ThisWorkbook.Sheets("Settings").Cells(i, 19) <> "" Then
ThisWorkbook.Sheets("Settings").Cells(i, 19).Copy

ThisWorkbook.Sheets("Calculation").Cells(j, 3).PasteSpecial (xlPasteValues)
j = j + 1
End If


Next i
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41609026

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档