首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >表(ListObject)使用UDF赋值

表(ListObject)使用UDF赋值
EN

Stack Overflow用户
提问于 2020-04-01 03:12:53
回答 1查看 162关注 0票数 0

上面是一个简化的例子,但我想用我的UDF实现的是接受排序列中的字符串和一个分隔符,分隔符将用于将字符串拆分成子字符串,并按顺序分配给列Q1,Q2,Q3,Q4。生成的子字符串可能少于4个,但永远不会超过4个。

代码语言:javascript
复制
Function DECONS(Subject As String, Delim As String) As String
' takes an input string "Subject" and seperates it using "Delim" as the deliminator
' If the desired element exceeds the number of unique substrings the function returns a blank result
' Hardcoded for max 4 substrings

' initializes temporary variables
Dim i As Long
Dim r() As String

' uses built in VBA function to split the passed string using the deliminating character
r = Split(Subject, Delim)

' increases the size of r() to 4 elements and fills extra elements with blancks
For i = UBound(r) + 1 To 3
ReDim Preserve r(i)
r(i) = ""
Next i

' my sad attempt at what I want to acheive
Dim loT As ListObject
Set loT = ThisWorksheet.ListObjects("TT")

For i = 1 To 4
loT.ListColumn(i + 1).Range.Value = r(i - 1)
Next i

End Function

我已经使用VBA split函数完成了文本操作,该函数产生了一个字符串数组,但是我遇到了一个难题,那就是如何将子字符串分配给相关的列。我的尝试可以在上面看到。我已经读了相当多的书,但我在VBA/Excel中仍然不太熟悉,还不能自己解决这个问题。在ListObject中比在table对象外更复杂吗?

遗憾的是,我不能从函数返回字符串数组,然后将其分配给多个单元格,因为Table对象不允许数组操作。我有一个工作,我将返回一个指定的元素,即第三个,我将调用每一列中的函数并输出一个相应的值。然而,该方法并不优雅,并且做了大量不必要的重复计算。

EN

回答 1

Stack Overflow用户

发布于 2020-04-01 14:16:52

试一试

代码语言:javascript
复制
Sub DECONS(Delim As String)
    Dim objList As ListObject
    Dim vDB As Variant, vSplit
    Dim vR(), n As Integer, r As Long
    Dim i As Long
    Set objList = ActiveSheet.ListObjects("TT")
    vDB = objList.DataBodyRange.Columns(1)

    r = UBound(vDB, 1)
    ReDim vR(1 To r, 1 To 4)
    For i = 1 To r
        vSplit = Split(vDB(i, 1), "\")
        n = 0
        For Each v In vSplit
            n = n + 1
            vR(i, n) = v
        Next v
    Next i
    'Range("b2").Resize(r, 4) = vR
    objList.DataBodyRange.Columns(2).Range("a1").Resize(r, 4) = vR
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60958151

复制
相关文章

相似问题

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