Tag: 用户定义的函数

用于确定货币或双倍的UDF方法

我在VB.NET中创build了一个UDF ,它有时与currency ,我需要在VB使用Decimal格式。 但是有时候我会用time或者简单的double 。 用什么方法来确定我应该如何增加数值,用decimal还是double ? 为了简单起见,我不想让excel返回实际的范围,但是如果我需要确定它是否被格式化为货币,则会这样做。

C#COM添加在从线程调用失败

我正在编写用C#编写的Excel的UDF库。 我将长期运行UDF,所以我想使UDFasynchronous,以便Excel UI在调用UDF时保持可用。 以下是我的代码; 但它从派生的线程调用Excel时失败… [ClassInterface(ClassInterfaceType.AutoDual)] [ComVisible(true)] [ComDefaultInterface(typeof(IRAPDataAddIn))] public class RAPDataAddIn : IRAPDataAddIn { public string GetPositionData(Excel.Range Portfolios, Excel.Range Security) { Excel.Application excelApp = (Excel.Application)Marshal.GetActiveObject("Excel.Application"); Excel.Range target = (Excel.Range)excelApp.get_Caller(System.Type.Missing); Thread _workerThread = new Thread(new ParameterizedThreadStart(this.GetData)); _workerThread.CurrentCulture = System.Globalization.CultureInfo.CurrentCulture; _workerThread.CurrentUICulture = System.Globalization.CultureInfo.CurrentUICulture; _workerThread.Start(target); return "Getting Data"; } public void GetData(object Range) { Excel.Range target = Range […]

在Excel中操作范围 – 返回值(错误2029)

我是一个相当新的Excel VBA,我来自一个更传统的编程背景(Java,C)。 我在传递一个Range对象作为我的用户自定义函数中的参数时遇到了问题(见下文)。 我的function的想法是采取几个参数来完成过滤范围的VLOOKUP。 我可能有几个语法问题(我不确定我的返回types和我的使用VLOOKUP),我将不胜感激这方面的一些指导。 查看结果,更多信息在我的代码中: Public Function GETVALUE(screen As String, strEvent As String, dataRange As Range, strDate As String) As String 'ASSUMPTION: dataRange has three columns; first column contains lookup values; Second ' column contains dates for filtering; Third column contains return values Dim result As String 'remove irrelevant dates in dataRange; apply filter […]

Excel将2d范围转换为1d范围以用于function

令人惊讶的是,search谷歌的答案 ,以及这个网站,导致这个问题没有明显的答案,所以我想我会张贴它。 我试图创build一个macros(可能是一个UDF)将2维单元格范围(如A1:C3)转换为1维范围(像A1:A10列或行)。 当需要二维数组时,这将用于诸如MATCH()函数,例如在A1:C3中查找特定值。 但是我希望这个function是多function的,这样我就可以把它放在任何二维数组中,使它成为一维。 如=INDEX(ARRAYDIMENSION(A1:C1),4)或=MATCH("hello",ARRAYDIMENSION(A1:C1),0) 我已经想出了一个讨厌的方法 。 我在一个新的工作表中为我的数组(对于A1:C3 ,即A1:A3 , B1:B3 , C1:C3 )的每一列进行拍打(所以A2被复制到新工作表的A2中,C3被复制到A9,B1 A4等) 然后返回我的新数组( Sheet2!A1:A9 )的引用,所以MATCH()或INDEX()或任何现在看起来那里。 它工作但有一些明显的缺陷; 添加一个新的表是macros观和丑陋的时间消耗,堆叠在一起的单个列不能是最有效的方法。 但特别是,macros编辑工作表,所以不能成为一个UDF(我不认为),这意味着我不得不使用它作为一个Worksheet_Calculate子,这是不是只是把它放在任何公式需要它。 我认为这是相对清楚的,请帮助/build议最好的方法,我只有几个星期的VBA,所以我还没有超级光滑。

如何在没有额外操作的情况下在所有excel中使用用户定义的函数?

我有一个简单的function,将范围转换为CSV格式。 我每次都在用excel文件使用这个函数。 所以我需要这个函数在所有Excel工作簿中默认存在,不需要像Excel's默认公式(例如VLookUp )那样额外加载。 我怎样才能做到这一点? 模块中的用户定义的function: Public Function csvformat(r As range, seperator As String) result = "" For Each cell In r result = result & cell & seperator Next result = Left(result, Len(result) – 1) csvformat = result End Function

需要使用VBA在Excel中创build用户定义的函数

我完全坚持在Excel VBA中为以下问题创build用户定义的函数。 任何帮助将不胜感激。 我的excel文件看起来像这样(为简洁起见只添加一小部分): ABCD 1 Susan Reagan Smith 2 Jill L Taylor 3 Sarah Sullivan Williams 4 Roger J Lopez 我想要一个函数来确定:如果A1 = Susan OR Jill OR Sarah,则B1> 1的AND LEN(string的长度)那么D1 = A1 / 2 B1 C1否则A1 / 2 C1 所以D列中的输出将如下所示: ABCD 1 Susan Reagan Smith Susan /2 Reagan Smith 2 Jill L Taylor Jill /2 […]

从自定义VBA函数(不是子)写入Excel工作表

我将非常感谢您的帮助,帮助我将数据从自定义VBA函数写入到Excel工作表中。 我已经能够从一个自定义的VBA子程序中写入,但在执行VBA函数时出错。 在示例代码中,“Sub write 2”和“Sub write 3”工作得很好。 但是“functiontesting2()”会生成“Value!” 在它的单元格和write3不执行。 Sub write2(r As Integer, c As Integer, d As Double) Dim a, b As Integer For a = r To r + 1 For b = c To c + 1 Cells(a, b).Value = d Next b Next a End Sub Sub write3() Call write2(3, 60, […]

在Excel用户定义函数中,如何确定正在使用哪种字体?

我有一个有数千行的Excel文件。 有些单元格是大胆的 ,有些则不是。 通常我能够确定哪些单元格是粗体的,哪些不使用这个UDF: Function isBold(cellBold) Application.Volatile If cellBold.Font.Bold = True Then isBold = 1 ElseIf cellBold.Font.Bold = False Then isBold = 0 Else isBold = 0 End If End Function 这适用于实际上具有粗体应用于单元格的单元格,除非数据已导入,并且原始源通过更改字体将文本从常规更改为粗体,而不是将粗体应用于单元格。 例如,常规字体是“Times New Roman”,粗体字体是“Times New Roman Bold”。 正因为如此,尽pipe在页面上看起来好像单元格已经大胆应用它,但上面的UDF不起作用。 我怎样才能改变UDF,以确定字体?

Excel用户定义的函数不能在Excel 2007中使用ArgumentDescriptions。我试图绕过它在我的添加

我在Excel中创build了几个用户定义的函数,并创build了一个简单的插件,以便我可以与同事分享。 我使用Application.MacroOptions为了给如何使用函数一些有用的指示。 特别是,我使用参数描述给参数的描述。 Application.MacroOptions _ Macro:=FuncName, _ Description:=FuncDesc, _ Category:=Category, _ ArgumentDescriptions:=ArgDesc _ HelpFile:= Helpfile 我刚刚发现,Excel 2007中不支持ArgumentDescriptions参数,这会导致此版本的错误。 排除这个参数解决了这个问题。 我不想分发两个版本的加载项。 如果版本比Excel 2007更新,我试图使用这个代码来包含参数,但是如果在Excel 2007中使用的话,它仍然会被无法识别的参数名称绊住: If Left(Application.Version, 2) > 12 Then Application.MacroOptions Macro:=FuncName, ArgumentDescriptions:=ArgDesc End If 有没有办法解决这个问题,所以我可以做到这一切只有一个加载项? 谢谢

拆分单元格并删除重复项?

我正在为学校做一个项目的剪辑和path集。 我有一个类似于以下的长数据列表 1 9 9 9 9 9 16 1 9 9 9 9 9 17 1 9 9 9 9 9 15 1 9 9 9 9 9 18 1 9 9 9 9 9 19 1 9 9 9 9 9 20 1 9 9 9 9 9 21 1 9 9 9 […]