首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >将数据复制到B列中的空白单元格,直到A列中的最后使用范围

将数据复制到B列中的空白单元格,直到A列中的最后使用范围
EN

Stack Overflow用户
提问于 2015-11-01 22:21:44
回答 2查看 159关注 0票数 1

我有这样的数据

我想让它看起来像这样

我编写的通过A列中的所有值并将值偏移到B列的代码是

代码语言:javascript
代码运行次数:0
运行
复制
Sub FindString()
Dim A As Range, r As Range
Set A = Intersect(ActiveSheet.UsedRange, Range("A:A"))

For Each r In A
    If IsNumeric(Left(r, 6)) Then
    r.Copy r.Offset(0, 1)
    End If 
Next r  
End Sub

如果前6个值为数字,此代码将从A列复制数据到B列,但我需要帮助将数据复制到B列中的所有空白单元格,直到它在A列中找到匹配的值为止。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-01 22:31:11

代码语言:javascript
代码运行次数:0
运行
复制
Sub FindString()
    Dim A As Range, r As Range, last As Range
    Set A = Intersect(ActiveSheet.UsedRange, Range("A:A"))

    For Each r In A
        If IsNumeric(Left(r, 6)) Then Set last = r
        If Not last Is Nothing Then last.Copy r.Offset(0, 1)
    Next r
End Sub

p.s:使用UsedRange时要注意问题。考虑搜索该站点,以找到列中最后一个非空单元格的最佳方法。

编辑

使用公式的非VBA方法(可能更快)

代码语言:javascript
代码运行次数:0
运行
复制
At cell B4: `=A4`
At cell B5: `=IF(ISNUMBER(VALUE(LEFT(A5, 6))),  A5, B4)`
Now copy B5, select the whole column B until last cell and paste.
票数 0
EN

Stack Overflow用户

发布于 2015-11-01 23:01:54

这里有一个快速方法(巧合地类似于ASH的手动方法)

代码语言:javascript
代码运行次数:0
运行
复制
Sub Demo()
    Dim r As Range

    With ActiveSheet
        Set r = .Range(.Cells(4, 1), .Cells(.Rows.Count, 1).End(xlUp))
    End With

    r.Offset(0, 1).Formula = "=IF(ISNUMBER(VALUE(LEFT(A4,6))),A4,B3)"
    r.Offset(0, 1) = r.Offset(0, 1).Value

End Sub

在我的系统上运行100,000行的<1s

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

https://stackoverflow.com/questions/33467893

复制
相关文章

相似问题

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