【问题标题】:Excel VBA - Search Range - If Cell Contains Text Then Copy Cell - Paste Offset 2,1Excel VBA - 搜索范围 - 如果单元格包含文本然后复制单元格 - 粘贴偏移量 2,1
【发布时间】:2016-04-29 12:03:50
【问题描述】:

我正在尝试简化我每周使用的 Excel 工作表。

我正在尝试创建一个 VBA 宏来执行以下操作:

  1. 在 C 列中搜索任何包含文本的单元格,如果为空白则忽略它
  2. 如果在单元格中找到文本,则复制该单元格,粘贴内容偏移 (2,1)

任何人都可以给我的任何帮助,我将不胜感激。我搜索了其他宏,并试图修改它们以供我使用,但无济于事。

    **Example Before Macro**
  A       B       C       D       E
1                 Hi
2                 Test
3
4                 Done
5
6

**Example After Macro Has Been Run**
  A       B       C       D       E
1                 Hi
2                 Test
3                         Hi
4                 Done    Test
5
6                         Done

当前代码:

Sub CopyC()  
  Dim SrchRng As Range, cel As Range 
  Set SrchRng = Range("C1:C10") 

  For Each cel In SrchRng 
    If InStr(1, cel.Value) > 0 Then 
      cel.Offset(2, 1).Value = "-" 
    End If 
  Next cel 
End Sub

【问题讨论】:

  • 听起来这将是一个简单的 For 循环和 If 语句。您目前拥有/尝试过什么代码?
  • 'code'Sub CopyC() Dim SrchRng As Range, cel As Range Set SrchRng = Range("C1:C10") For Each cel In SrchRng If InStr(1, cel.Value) > 0然后 cel.Offset(2, 1).Value = "-" End If Next cel End Sub'code'
  • 将 if 语句更改为 If cel.Value <> "" Then
  • cel.Offset(2, 1).Value = "-" cel.Offset(2, 1).Value = cel.value
  • @ScottCraner 我把代码改成了那个;但是,它只复制一个空白文本(这是因为我的代码,我不知道如何复制单元格的内容)并且它不会忽略空白单元格。

标签: excel vba


【解决方案1】:

你很接近:

Sub CopyC()
Dim SrchRng As Range, cel As Range
Set SrchRng = Range("C1:C10")
For Each cel In SrchRng
    If cel.Value <> "" Then
        cel.Offset(2, 1).Value = cel.Value
    End If
Next cel
End Sub

我在 D 列中添加了 1-6 以表明它忽略了空格

【讨论】:

  • 斯科特你是个天才!我爱你:D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-06
  • 1970-01-01
  • 2018-09-06
  • 2021-03-18
  • 2016-12-25
  • 1970-01-01
相关资源
最近更新 更多