在MS Excel VBA上。如何在范围公式中使用当前(非活动)行的值?

塞格斯

让我们来看看。我有整个列的命名范围,假设A:A名为MyColumn。如果我在单元格B1上放上公式“ = MyColumn” ...,它将自动将与“ MyColumn”相交的“ MyColumn”上的单元格,在这种情况下,当然是A1。我可以将此公式填充从B1拖放到B5,其值将从A1到A5。我们对此表示满意。

我需要使用此逻辑在VBA上编写公式。使用ActiveCell.Row对我来说是没有意义的,因为如果我从B1拖放到B5 ...所有单元格都像B1那样被填充:

Function Test(ByVal a As Range) As String
    Test = a(ActiveCell.Row)
End Function

有了以上,我的结果是这样的:

valor1  | valor1
valor2  | valor1
valor3  | valor1
valor.. | ...
valorn  | valor1

仅当我选择一个单元格并按F2然后输入时,该值才固定。

我到底打算做什么?我需要一个仅从单元格右边修剪空格的函数,因为它的值是缩进的,但可以包含尾随空格。我的实际功能如下所示:

Function TrimIndented(ByVal tText As Range) As String
    TrimIndented = RTrim(tText(ActiveCell.Row))
End Function

经过对网络的深入研究,我只找到了使用“活动单元”的解决方案,但是我发现了有关“ ThisWorkbook”的内容,该内容引用了BOOK当前正在运行的代码,而不是活动代码。我需要类似的东西,但是需要一个牢房。

你能帮我么?

====-编辑

  • 我需要保留领导空间。
  • 内置公式= Trim(cell)修剪尾随空格和前导空格
  • NamedRangeA可以包含任意数量的值,RangeB必须始终包含准备就绪的公式。
  • 它将像模板一样

====-

谢谢并恭祝安康 :)

Cor_Blimey

尝试如下所示的UDF。

请注意,对于要部署到客户端的UDF,您应该通过在循环之前将范围加载到数组中来提高其在大型数据集上的性能,还应考虑使其适应于处理输入数组等以及Excel公式中其他常见的类型。这是为了给它提供用户期望内置功能的功能和性能。

用法就像:

  1. 在字符串上使用:(=RTRIM(" hello ")返回:“ hello”)
  2. 在单个单元格上使用:(=RTRIM(A1)返回A1 =“ hello”:“ hello”)(当然可以将其向下拖动到列等)
  3. 用作数组公式(例如,选择范围B1:B5,键入以下公式,然后按Ctrl + Shift + Enter输入):(=RTRIM(A1:A5)返回:依次按Arim:A5中的每个单元格的数组(例如{“ a”,“ b”}等)
  4. 要使用您定义的名称在此行的相交上进行操作,请使用INDEX缩小范围,例如:=RTRIM(INDEX(myName,ROW()))

样例代码:

Function RTRIM(ref)

    Dim i As Long, j As Long
    Dim results

    If TypeOf ref Is Range Then
        ReDim results(1 To ref.Rows.Count, 1 To ref.Columns.Count)
        For i = 1 To UBound(results, 1)
            For j = 1 To UBound(results, 2)
                results(i, j) = VBA.RTrim(ref(i, j))
            Next j
        Next i
        RTRIM = results
    ElseIf VarType(ref) = vbString Then
        RTRIM = VBA.RTrim(ref)
    Else
        RTRIM = CVErr(XlCVError.xlErrValue)
    End If

End Function

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

MS Excel:MS Excel中的公式

来自分类Dev

MS Excel的VBA脚本

来自分类Dev

如何在MS Excel中使用IF获取特定列值?

来自分类Dev

在MS Excel中使用VBA标记单词

来自分类Dev

如何从MS Access 2003 VBA处理MS Excel分页符

来自分类Dev

如果日期未出现在范围内,MS Excel 如何在 COUNTIF 公式中返回空白值

来自分类Dev

MS Excel中使用的功能过多?

来自分类Dev

如何在ms excel中组合多个IF

来自分类Dev

MS Excel 2007如果则公式问题

来自分类Dev

用于复制链接的MS Excel公式

来自分类Dev

MS Excel:如何动态使用COUNTIF()

来自分类Dev

在MS Access中使用Excel VBA进行SQL删除

来自分类Dev

MS Excel VBA类型不匹配错误

来自分类Dev

在Excel 2010中隐藏MS VBA屏幕

来自分类Dev

从MS Excel VBA代码获取零

来自分类Dev

代码片段不处理 MS Excel VBA

来自分类Dev

使用VBA将单元格范围从MS Excel粘贴到MS PowerPoint

来自分类Dev

MS Excel 2010 抑制 0 值

来自分类Dev

如何在SUM公式中将文本值视为MS excel中的特定数字

来自分类Dev

MS Excel:将行转换为列

来自分类Dev

MS Excel根据字体颜色选择行

来自分类Dev

如何在MS Excel中将VBA应用于多行?

来自分类Dev

如何在MS Project中获取VBA以识别Excel?

来自分类Dev

如何比较MS Excel中的两列?

来自分类Dev

使用Array自动筛选的条件,MS Excel

来自分类Dev

使用= IF的MS-Excel利息计算

来自分类Dev

MS Excel - 使用 M 代码合并表格

来自分类Dev

使用 Java 获取 MS Excel 文档属性

来自分类Dev

如何插入MS表格Excel中使用的Apache POI的Java