Tag: udf

UDF来做一种替代数组函数

我试图做一个函数,不仅用一个文本replace另一个文本,而且用另一个横向值集合replace范围内的一组值。 我有这个: Public Function SubstituteRange(RangeWithText As Range, TwoColumnMatrix As Range) As String Dim Text As String Text = "/" & RangeWithText.Value & "/" 'as example st like this: "/" & "1/2/3/4/5/6/7/8" & "/" = "/1/2/3/4/5/6/7/8/" Dim SearchForRange As Range Set SearchForRange = TwoColumnMatrix.Columns(1) 'let us say "A1:A4" with /2/ /3/ /4/ /5/ in each cell […]

ms excel 2010中用于获取环境variables用户名的用户定义函数不起作用

我在ms excel 2010中创build了一个用户定义的函数,通过环境variables“USERNAME”获取当前login的用户。 但是,在win7上运行ms excel2010的机器上,这个函数并没有更新当前的用户名。 我已经将它打包在一个受保护的工作表中,并分发给几个用户。 udf代码是这样的:Public Function UserName()UserName = Environ $(“UserName”)End Function 然后使用以下公式调用函数: =用户名()

奇怪的#VALUE! 错误

请看看这个错误: 这里有两个function: Public Function CompareExtra(r1 As Range, r2 As Range) As Long Dim r As Integer, v As Variant, v2 As Variant Dim rr1() As String Dim rr As Range rr1 = Split(r1, ",") For r = LBound(rr1) To UBound(rr1) v = –Trim(rr1(r)) If v <> 0 And v <> "" Then For Each rr […]

插入行时UDF不更新

我对UDF很新,我不确定它们是如何运作的。 我的函数返回正确的信息,只要不插入新的行。 就好像headRng在首次使用时被保存到内存中,即使插入了新行也不会被更新。 我怎样才能解决这个问题? 另外。 我的function似乎循环了很多次。 在我的代码中,你会看到在1000行之后出现的msgbox。 所以我知道它至less循环1000次。 不知道为什么它循环。 忘了我有另一个工作簿打开这个相同的function,导致了1000+循环。 如何使用它的例子: https : //i.imgur.com/zRQo0SH.png Function StraightLineFunc(headRng As Range, dataRng As Range) As Double Application.Volatile True Dim arrCntr As Integer Dim arr() As Variant Dim rowOffset As Integer Dim cntr As Integer Dim stdvTotal As Double stdvTotal = 0 cntr = 0 arrCntr = 1 For […]

尝试获取Excel UDF自定义单元格格式以返回“空单元格”或“格式化用户input”

即时通讯尝试使用自定义定义的UDF函数来格式化一个巨大的Excel电话号码列表,以及我添加到这个Excel文件的任何未来的电话号码条目。 另外:UDF本身只是格式化电话号码,所以无论我input一个有没有扩展名的电话,它都会格式化为更具可读性。 我发现它在网上,并修补它,以适应我的需求。 那不是我的问题, 我的问题是,如何预先取得一个单元格的input值,并将其应用为单元格格式,而不返回所有没有值的单元格的#VALUE值。 我试过了一些效果: = IF(ISBLANK,“”,= CustomUDF(cellvalue)) 但不认为这会做这项工作。 如果你想看到我的UDF,在这里! Function cleanPhoneNumber(thisNumber As String) As String ' this function aspires to clean any phone number format ' to standard format (+9999) 999-999-9999 or 999-999-9999 ' works with almost all phone number formats stored in text Dim retNumber As String For i = 1 To […]

加载ExcelDna .xll插件的自定义function区

我有一个Visual Studio项目来创build一个.xll插件。 在那个项目中我有一个Main.cs文件和一个Functions.cs文件。 Functions.cs文件存储将在Excel中使用的UDF。 我有另一个项目,为Excel创build一个function区。 在那个项目中是一个Ribbon.xml和Ribbon.cs文件。 我将这两个文件移到了.xll项目中。 但我不知道该怎么做,以便当用户将.xll文件安装到他们的Excel中时,自定义function区选项卡也会显示。 顺便说一句 ,我是一个初学者,我正在做这个实习。 所以要么我真的找不到任何的讨论,要么我不明白人们在讨论什么。 所以我很抱歉,对于你来说可能看起来很简单的问题。

Excel VBA:如果…则在不更改单元格值的情况下退出UDF

我已经看了一个答案,但只能find有关正常的Excel函数的东西。 情况:我有用Excel定义的用户定义函数(UDF)。 我会提供代码,但我认为这不是特别重要。 我想阻止UDF在某些时候计算(因为它是跨越几千个单元格,当我在工作表中处理其他事情时需要closures,以防止长时间的等待时间)。 目前,我用单元格B1(作为基本公式的输出)“Pause”来实现这一点,并且在我的UDF开始处的一个If语句检查这个,并在input暂停时退出函数。 Public Function SIMILARITY(ByVal String1 As String, _ ByVal String2 As String, _ Optional ByRef RetMatch As String, _ Optional min_match = 1) As Single Dim b1() As Byte, b2() As Byte Dim lngLen1 As Long, lngLen2 As Long Dim lngResult As Long If UCase(ActiveSheet.Range("B1").Value) = "PAUSE" Then Exit Function ElseIf […]

UDF不以VBA代码计算

我有一个UDF返回一个文本取决于每一行的时间和date。 这个UDF公式被放置在X2中,当我运行数据更新代码来replace表单中的所有数据时,我使用X2:Y和LastRow的填充。 我的计划是在UDF完成后过滤数据并删除不需要的数据。 因为Excel过滤时会重新计算数据,所以我认为我可以复制 – >粘贴值以确保UDF不会再次运行。 完整的代码如下,但“有趣”的部分是在'''''' 。 Sub importera() Dim mainWB As Workbook Dim srcWB As Workbook Set mainWB = ThisWorkbook 'Application.ScreenUpdating = False Sheets("XCFIL").Activate LastRow = Cells(Rows.Count, "A").End(xlUp).Row Range("A3:Y" & LastRow).ClearContents Range("A2:W2").ClearContents Workbooks.Open Filename:="C:\Textfiler\XCFIL.TXT" Range("A:A").TextToColumns Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _ Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _ :=Array(Array(1, 1), Array(2, 1), Array(3, […]

在UDF中使用VBA代码search时,是否可以使用FindPrevious?

我正在尝试使用VBA来处理基于“查找”函数的结果,因为它比查询结果的每个单元轮询要快得多。 我已经把它切回到它是重现错误的基础知识,我仍然得到“对象variables或块variables未设置”这部分的错误SearchRange.FindPrevious.Address (你必须停下来,并把它一步到得到错误,UDF的只是退出了debugging模式以外的错误,而没有返回错误) 这里是kicker,当试图在表中使用UDF时出现错误,如下所示: =testfind("3206-1",E:E)但是当我在VBE的直接窗口中使用它时,如下所示: ?testfind("3206-1",Range("E:E"))我得到正确的结果$E$15295没有错误。 代码是: Function TestFind(FindString As String, SearchRange As Range) Dim ActiveAddress As Range Set ActiveAddress = SearchRange.Find(FindString) TestFind = SearchRange.FindPrevious.Address End Function 修改L42的变化,现在它的工作原理: Function TestFind(FindString As String, SearchRange As Range) Dim ActiveAddress As Range Set ActiveAddress = SearchRange.Find(FindString) TestFind = SearchRange.Find(FindString, , , , , xlPrevious).Address End Function

获取单元格地址的函数已被input到

我一直无法弄清楚,谷歌search没有任何帮助! 我有一个VBA函数,我想在电子表格中的单个单元格中运行。 该函数需要知道该函数刚input的行。 我目前通过一个专门用于行计数的列来传递这个信息(也就是1-2-3-4-5-6等)。 这是有点笨拙,不是特别的光滑,所以我试图find一种方法,基本上只是键入函数(即。 =myfunc() )到单元格中,然后有一行内的单元格,沿线: CurrentRow = CellFunctionWasTypedInto.Row