Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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宏| 1列-查找包含文本的单元格,并复制/粘贴到以数字开头的单元格上_Excel_Vba - Fatal编程技术网

Excel宏| 1列-查找包含文本的单元格,并复制/粘贴到以数字开头的单元格上

Excel宏| 1列-查找包含文本的单元格,并复制/粘贴到以数字开头的单元格上,excel,vba,Excel,Vba,我是非常新的,自学了Excel中的VBA宏。我发现这个网站很有帮助,但这一点让我感到困惑 我正试图找出最好的方法来 从一列的顶部开始。 查找第一个不以“08”开头的单元格 复制该单元格并粘贴,直到有另一个单元格不是以“08”开头。 此时,复制新单元格并继续向下粘贴以重复该图案 下面是一个“之前/之后”,这样你就可以了解我想做什么。谢谢你的建议/帮助 之前: HEADER1 08/01/2014 08/02/2014 08/04/2014 08/05/2014 08/06/2014 HE

我是非常新的,自学了Excel中的VBA宏。我发现这个网站很有帮助,但这一点让我感到困惑

我正试图找出最好的方法来

从一列的顶部开始。 查找第一个不以“08”开头的单元格 复制该单元格并粘贴,直到有另一个单元格不是以“08”开头。 此时,复制新单元格并继续向下粘贴以重复该图案

下面是一个“之前/之后”,这样你就可以了解我想做什么。谢谢你的建议/帮助

之前:

HEADER1
 08/01/2014
 08/02/2014
 08/04/2014
 08/05/2014
 08/06/2014
HEADER2
 08/01/2014
 08/02/2014
 08/04/2014
 08/05/2014
 08/06/2014
 08/07/2014
 08/08/2014
 08/09/2014
HEADER3
 08/11/2014
 08/13/2014
HEADER4
 08/25/2014
 08/26/2014
 08/27/2014

After:
HEADER1
HEADER1
HEADER1
HEADER1
HEADER1
HEADER1
HEADER2
HEADER2
HEADER2
HEADER2
HEADER2
HEADER2
HEADER2
HEADER2
HEADER2
HEADER3
HEADER3
HEADER3
HEADER4
HEADER4
HEADER4
HEADER4
代码:
将其复制到模块中并运行。确保更新了
startCell
的范围

哇,谢谢你的快速回复。唯一的问题似乎是日期是自定义单元格格式,而不是文本字符串。是否要更改此代码中的格式?只需在第一行最后两个括号之间添加
.Text
,并使用
str=
如下所示:`str=Application.WorksheetFunction.Trim(单元格(i,startCell.Column).Text)'
Sub FillDwn()
    Dim r As Range
    Dim startCell As Range
    Dim i As Long
    Dim str As String
    
    Set startCell = Range("A1") 'Change to correct starting cell
    Set r = startCell
    
    For i = startCell.Row To startCell.Row + startCell.CurrentRegion.Rows.Count - 1
        str = Application.WorksheetFunction.Trim(Cells(i, startCell.Column))
        str = Left(str, 2)
        
        If str = "08" Then Cells(i, startCell.Column) = r.Value Else Set r = Cells(i, startCell.Column)
    Next i
    
End Sub