现在,bigquery支持#SandardardSQL上的异步 #legacySQL SELECT SUM(s) FROM js(( SELECT FLOOR(RAND()*100000) group, NEST(requests) as x FROM ( SELECT requests, content_size FROM [fh-bigquery:wikipedia.pagecounts_201205] ) GROUP BY group) , group, x , "[{name:'s', type: 'float'}]", "function (row, emit) { const memory = new WebAssembly.Memory({ initial: 256, maximum: 256 }); const env = { 'abortStackOverflow': _ => { throw new Err
以下是关于 user-defined-functions 的编程技术问答
我在VSTO托管代码中看到了一篇有关创建Excel UDF的文章,使用VBA: http://blogs.msdn.com/pstubbs/archive/2004/12/31/344964.aspx . 但是,我想使用VSTO 2005 SE在C#Excel加载项中使用此功能,任何人都可以帮助吗? 我尝试了罗曼(Romain)指出的技术,但是当试图加载Excel时,我会得到以下例外: 自定义组件不能 被发现或无法加载.你 仍然可以编辑并保存 文档..... 详细信息: Type mismatch. (Exception from HRESULT: 0x80020005 (DISP_E_TYPEMISMATCH)) ************** Exception Text ************** System.Runtime.InteropServices.COMException (0x80020005): Type mismatch. (Ex
我正在尝试制作一个非易失性的UDF,但似乎不可能.所以这是我非常简单的测试-UDF: Option Explicit Dim i As Integer Sub Main() i = 0 [A1] = "zyy" MsgBox i End Sub Function Test(rng As Range) Application.Volatile (False) Test = rng.Value i = i + 1 End Function 我得到了一个原本空的工作表,该工作表使用此功能几次,每次我调用main()并使用UDFS上的所有单元格更改所有单元,均已重新计算.如何使这个(任何)UDF无挥发性? application.volatile(false)应该具有该效果,但显然不起作用. 编辑:如果我手动更改单元格,则像预期的那样起作用,只有在我通过VBA更改单元格时才会重新计算.这是正常的行为还是我可以更改它? 解决方案 我找到了解决方案,这确实是一个非
假设我们有一个桌子水果详细信息, 乡村 水果 美国 苹果 印度 芒果 意大利 奇异果 澳大利亚 guava 我们有3个角色,即 region1_role, region2_role和 global_role. 我希望region1_role可以访问美国和澳大利亚的数据, region2_role可以访问印度和意大利数据, global_role可以访问该国所有数据. 我们当然可以使用安全的视图来实现这一目标,但是可以只使用一个安全视图来实现吗? 解决方案 让我们从仅限于一个国家的RLS开始. 让这个表居住在里面 数据库:Fruits_DB 模式:Fruits_Schema 表:Fruits 乡村 水果 美国 苹果 印度 芒果 意大利 奇异果 澳大利亚 guava 让有3个角色REGION1_ROLE,GLOBAL_ROLE和GLOBAL_ROLE Master_role是在数据库上访问所有表等的角色 // C
我们有许多视图,存储的PROC,表值和标量函数. 我们如何看到从SQL Server中调用这些次数的频率甚至几次? 我们是否需要编辑每个呼叫上的表格以获取此表,或者SQL Server将此信息保留在某个地方? ? 解决方案 这是Glenn Berry的DMV查询之一.它计算了执行了一个缓存的存储过程的次(由当前数据库过滤): SELECT TOP(25) p.name AS [SP Name], qs.execution_count, ISNULL(qs.execution_count/DATEDIFF(Second, qs.cached_time, GETDATE()), 0) AS [Calls/Second], qs.total_worker_time/qs.execution_count AS [AvgWorkerTime], qs.total_worker_time AS [TotalWorkerTime], qs.total_elapsed_t
过去,我已经看过有关此事的讨论,例如在这里.但是我想知道是否沿线的某个地方,也许是10G或11G(我们使用的11G),Oracle对"参数化视图"提供了任何更好的支持,而无需用各种用户定义的类型和///或光标定义或sys_context变量. 我希望Oracle对"仅仅有效"的某些东西的增加,按照T-SQL中的以下示例: CREATE FUNCTION [dbo].[getSomeData] (@PRODID ROWID) RETURNS TABLE AS RETURN SELECT PRODID, A, B, C, D, E FROM MY_TABLE WHERE PRODID = @PRODID 然后选择它: SELECT * FROM dbo.getSomeData(23) 解决方案 无需SYS_CONTEXT或光标定义. 您确实需要一种类型,以便在解析SQL时,它可以确定要返回哪些列. 也就是说,您可以轻松地编写
i具有许多用户定义功能,并没有参数.我在本文中使用cudfhelper .asp 用于寄存器功能. 注册函数询问参数,即使不是. 示例我没有参数的福特: Public Function getProjects() getProjects = Utils.execute("getProjects", "getWSEntitiesData") End Function 在myFunction.c 上 #include #define DLL_EXPORT __declspec(dllexport) DLL_EXPORT void getProjects() { return; } 在myFunction.dll上编译 i用这些参数注册功能. SetGlobalName = Application.ExecuteExcel4Macro("MyFunction.dll", "getProjets", "P",
我正在使用Excel2013.我有一张大表格,其中包括客户列表及其信息.当我将新客户添加到此电子表格中时,它通过将客户ID发布到我们的服务器中填充了大多数信息,服务器将在JSON字符串中返回客户信息,然后将其解析.特定功能返回所需的信息,即" = JSON_GET_EMAIL(USERID)"将返回电子邮件地址.所有这些都很好,对我公司的员工使用相对用户友好. 应用自动滤波器时出现的问题.即使没有功能在此方面没有挥发性,应用自动过滤器也会导致电子表格重新计算所有功能,以及对于客户或一些客户而言,有效且迅速的效率和快速的效率正在像Crazy一样放慢电子表格. . 我转向您知道是否有任何方法可以防止每次应用过滤器时都能计算出我的功能. 我最好的, fabien 解决方案 这是我实施的解决方案.我想分享它,因为我已经看到许多人与UDF遇到了同样的问题. 它不是完美的,但是可以使其更快,因为它避免了连接到服务器并每次解析字符串. 我创建了一个由Use
我目前正在使用我的工作簿的表2列中的公式,该公式将从表1上的5列中查找值并返回相应的文本.例如,如果表2上的M列中的值与表1上的J列中的任何值匹配,则它将返回" N",如果不是,则可以在K列中查看,如果匹配的内容,则它将返回D,依此类推.我在VBA中这样做,因此使用的公式为 ActiveSheet.Range("J2:J" & intLastRow).FormulaR1C1 = _ "=IFERROR(IF(ISNUMBER(MATCH(RC[3],Sheet1!C10,0)),""N"", IF(ISNUMBER(MATCH(RC[3],Sheet1!C11,0)),""D"", IF(ISNUMBER(MATCH(RC[3],Sheet1!C12,0)),""R"", IF(ISNUMBER(MATCH(RC[3],Sheet1!C13,0)),""G"", IF(ISNUMBER(MATCH(RC[3],Sheet1!C14,0)),""F"","""")))
我对自己的Excel-VBA功能有故障,我不知道为什么. 我想根据函数转换函数转换(e)的输入参数的值: ,使用一个多项式或另一个多项式(根据某些规则计算出一个coeficients). 在Excel展中,我有名为: " COEF0_1"," COEF1_1"," COEF2_1"," EMIN_1"," EMAX_1" [对于第一个多项式]; " COEF0_2"," COEF1_2"," COEF2_2"," EMIN_2"," EMAX_2" [对于第二个]. 如果" e"在" emin_1"和" emax_1"之间,则函数转换conventemf(e)将应用第一个多项式,如果" e"在" emin_2"和" emax_2"之间,则必须应用第二个. 我已经编程了这样的内容,并且运行正常,但是,当我打开另一个Excel文件(甚至是一个空的文件!)时,先前计算的值会丢失结果,并出现"#" valor!". 非常感谢! Function CONVERTemf(
32位Excel 365在64位Win7上 工作表300600行x 105列 目标:计算每列中唯一条目的数量 尝试解决方案1:公式 {=SUM(1/COUNTIF(A8:A300600,A8:A300600))} 问题:长期运行时间,冻结Excel,必须停止计算 尝试解决方案2:vba udf Function UniqueCount(Selection As Range) As Integer Dim UniqueArray() ReDim UniqueArray(0 To Selection.Count) Dim Rng As Range Dim CUniqueCount As Integer CUniqueCount = 0 For Each Rng In Selection For i = 0 To Selection.Count If UniqueArray(i) = Rng.Value Then Exit For
想象您要检查一个范围中每个单词的左字母是否为" A",然后加入该条件为真的单词.一种方法是使用辅助列,返回""如果不是真的,则该单词以" a"开头,然后在助手列上CONCAT() s的总行. 另一种方法是使用数组公式. {=CONCAT(IF(LEFT(range) = "a", range, ""))}.无论如何,这实际上是使用助手列的. 但是我想要的是使用条件格式化方法:应用条件格式时,您可以参考范围的左上方单元格.因此,对于A1:A10中的range,我想要一个=CONCATIF(A1:A10, LEFT(A1) = "a")之类的函数. SUMIF和COUNTIF接近此功能,只有它们使用字符串输入">","=..."无法引用他们正在测试的单元格(即,没有等效于LEFT(A1),因为没有办法指 the_cell_i'm当前_working_on 在字符串中) 但是问题是,如果我制作一个UDF,它试图接受LEFT("A1") = "a"之类的测试,它只是对一个单元进
在最近的一篇文章中(动态数据验证)意识到,UDF使用查询性能微二聚体以大约15毫秒的执行 - 这是可以接受的. 在下面的代码上,将Debug.Print "Elapsed time (ms): " & Format((MicroTimer - startTime) * 1000, "0.000")放置在行Cells(Target.Row, 12).FormulaR1C1 = "=DDDDL(RC[-1])"之前,Cells(Target.Row, 12).FormulaR1C1 = "=DDDDL(RC[-1])"产生约100微秒,在UDF线之后移动调试线,产生600毫米.慢6000倍,这意味着通过formular1c1触发UDF后会有很大的延迟. 我已经在各个位置测量了Worksheet_change子,并且在微秒范围内运行 - 似乎没有问题. 延迟似乎在工作表_change子和UDF之间,但我不确定如何修改计时器代码以测量subs之间的时间延迟.关于可能导致这种延迟
我有一个访问365数据库,该数据库具有发票号,到期日期和应得的金额.我正在尝试创建一个Excel UDF,从而输入到期日和发票号,该功能查询数据库并返回到期的金额. 公式结果是#Value,没有编译器错误,尽管尝试打开记录集时似乎存在错误(我为此操作设置了一个错误消息框).也许我的SQL有问题?我感谢有关此事的任何帮助. 我发现了几次有关类似主题的讨论,但是我一直无法使此代码工作.我感谢有关此事的任何帮助. https://www.mrexcel.com/board/threads/need-help-creating-creating-user-defined-functions-functions-in-excel-to-query-from-a-a-database.943894/ 这是代码: Function CLLData(inpDate As Long, inpInvoiceNum As String) Dim conn As
我创建了一个用户定义的函数,以确定是否突出了特定的颜色,并且在某些情况下起作用,但我不需要的颜色.基本上,当该单元格永久强调该颜色时,它可以起作用,但是我将其基于条件格式,并且如果由于条件格式而是该颜色,则该功能不起作用. . Public Function Active(Rng As Range) As Boolean If Rng.Interior.Color = RGB(217, 151, 149) _ Then Active = True End Function 关于为什么要感谢的任何帮助. 解决方案 对于简单的条件格式(无彩色缩放类型),您可以参考@BRETTDJ和@Chuff的外部参考 我如何使用VBA在Excel 2007中找到条件格式的单元格的填充颜色值? 对于颜色缩放的条件格式,我尝试了pastepecial,但它不起作用. 对我来说,唯一可行的解决方案是将范围复制到MS Wo
我复制了一些UDF函数代码,这些代码从本指南 据说这对他人有用.我并没有真正更改代码,但是对于透明度而言,这是我在工作簿中作为模块的确切代码: Function IsExtWorkBookOpen(Name As String) As Boolean Dim xWb As Workbook On Error Resume Next Set xWb = Application.Workbooks.Item(Name) IsExtWorkBookOpen = (Not xWb Is Nothing) End Function 现在,当我在工作簿的单元格中输入函数时,该函数在下拉列表中作为选项显示.我按下标签以自动填充UDF的全名,以确保正确键入功能名称.然后,我在不同的单元格中几次将该函数称为字符串,例如: =IsExtWorkBookOpen("C:\Computer\Fake\filepath\name\CORRECTLY SPELLED
我想从Excel内的列中的较大字符串中提取文本和数字的组合. 我必须使用的常数是每个文本字符串将 •以A,C或S开头,然后 •永远是7个字符长 •我想提取的字符串位置变化 我一直在使用有效工作的代码; Public Function Xtractor(r As Range) As String Dim a, ary ary = Split(r.Text, " ") For Each a In ary If Len(a) = 7 And a Like "[SAC]*" Then Xtractor = a Exit Function End If Next a Xtractor = "" End Function 今天,我了解到有时我的数据可能包括这样的方案. 我想要的是调整代码 其次,我想将诸如"支持"和"收集"之类的公共单词排除在提取中. 最后,第七个
我正在为Excel VBA中的QueryDef分配访问2007查询.我的查询调用用户定义的函数,因为它对具有正则表达式评估字段的结果进行了计算.我使用的是querydef,因为我正在收集用户形式中的值,并希望将其传递到查询中. 当我运行VBA代码时,我会收到一个错误:"运行时错误'3085':UNDEDIND函数'regexfunc'在表达式中." 在问题表明问题是DAO无法从Excel调用Access UDF,因此我将UDF复制到Excel VBA模块中,但我仍然会遇到错误. 访问查询: select field1 from dataTable where regexFunc(field1)=[regexVal] 这是Excel VBA代码: 'QueryDef function Sub makeQueryDef (str As String) Dim qdf As QueryDef Dim db As Database Set db = OpenDa
我想为以下Excel索引匹配公式创建一个UDF: {=INDEX($A$1:$J$7,MATCH(B9,$A$1:$A$7,0),MATCH(1,($A$1:$J$1=B10)*($A$2:$J$2=B11),0))} AA AA AA BB BB BB CC CC CC a b c a b c a b c 1 10 55 24 48 95 19 5 28 65 2 16 48 3 62 46 50 59 80 17 3 63 47 19 23 67 26 14 16 9 4 55 91 4 55 72 79 27 39 50 5 75 53 7 42 45 19 58 41 12 Condition1 3 Condition2 AA Condition3 c index-Match 19 =INDEX($A$1:$J$7,MATCH(B9,$A$1:$A$7,0),MATCH(1,($A$1:$J$1=B10)*($A$2:$J$2=B11),0))} 注意:CTRL
我有一个工作的UDF,该UDF基于所选单元的第一个字母分配用户名.字母表和用户名列表内置在VBA中的功能中,因此更新很乏味,因此我正在寻找替代方案. 我在工作簿中创建了一个表,可以更轻松地和任何人更新作业.我已经做出了一些努力,但是我无法通过查找表格来正确分配用户名.下面有一次尝试,要么我离大关远离,要么无法完成.想法? Function Test(Optional Cell As String) As String Dim Name As Variant, Alpha As Variant, ATable As Variant Dim i As Integer If UCase(Left(Cell, 1)) = "A" Then Alpha = UCase(Left(Cell, 2)) Else: Alpha = UCase(Left(Cell, 1)) End If ATable = Workbook("C:\filepath\").Worksheets("s