【问题标题】:Referring to a different cell and extracting Substrings in VBA引用不同的单元格并在 VBA 中提取子字符串
【发布时间】:2015-12-31 04:38:57
【问题描述】:

我有两张纸,“报告”和“数据”。在“数据”表中,A 列中的值如下 T-Shirt.Adidas.25.110 我需要获取原始数据并将它们作为单独的实体输入到“报告”表中。

例如。单元格 A1 将显示“T 恤”单元格 B1 将显示“阿迪达斯”

这是我目前所拥有的。它是一个 with 语句,但这只适用于一行。我不知道如何循环它。

Dim Cell As Object
Dim Data As Range
Dim Report As Range
Set Report = Worksheets("Report").Range("A2", Range("A2").End(xlDown))
Set Data = Worksheets("Data").Range("A2", Range("A2").End(xlDown))

With Report
    .Resize(1, 4) = Split(Worksheets("Data").Range("A2"), ".")
End With

宏需要适用于数据表中的任意数量的对象。 提前致谢!

【问题讨论】:

  • 那是什么语言/程序? Excel?请编辑您的问题并添加适当的标签。
  • 是的,这是针对 excel vba 的。对不起
  • 好的,但是如果您检查该标签的描述(只需将鼠标放在它上面),它会显示:“如果您的问题是专门针对 Excel、Access、Word 或 Outlook 的编程,也可以使用适当的标签:excel-vba、access-vba、word-vba 或 outlook-vba。”所以请再次编辑它以添加 excel-vba。谢谢!

标签: vba excel for-loop foreach substring


【解决方案1】:

这是一种循环方式:

Sub test()

Dim Cell As Object
Dim Data As Range
Dim Report As Range
Dim i As Long, TempArray As Variant

Set Data = Worksheets("Data").Range("A2", Worksheets("Data").Range("A2").End(xlDown))
Set Report = Worksheets("Report").Range("A2")

For i = 1 To Data.Count
    TempArray = Split(Data.Range("A" & i), ".")
    Report.Offset(i - 1).Resize(1, UBound(TempArray) + 1) = TempArray
Next i
Set TempArray = Nothing

End Sub

通过这种方式,您可以使用数据作为迭代的来源和计数,并且可以根据给定数据中的周期数来概括列。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-16
    • 2019-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多