小编Lan*_*rts的帖子

从 Excel 中的分隔字符串中提取单词?

我需要提取分号之间的特定单词,条件是这些单词包含“@”,这意味着电子邮件。

这是一个例子:

A1 >> james john;Paris street;p.o. box:12345;tel.987654321;username@site.com;usa
B1 >> david eric;34th street;tel.543212345;name@web.net;canada;ottawa
Run Code Online (Sandbox Code Playgroud)

... 等等

请注意,电子邮件没有特定的位置,因此它可以位于任何地方。另外,除了“@”之外没有常见的单词或字符,因此必须有一个公式在分号+包含的“@”之间进行选择,以提取电子邮件并将其放入A2和B2等中

excel worksheet-function

5
推荐指数
1
解决办法
9378
查看次数

在perl中生成引用第三方加载项函数的Excel电子表格

我正在尝试使用Spreadsheet :: SimpleExcel生成一个xls文件,该文件调用在第三方添加中定义的函数(Bloomberg,如果重要的话).底层的WriteExcel包不允许我写出来,因为它不知道这个加载项函数.我看到模块知道的内置函数的巨型哈希表,可能会将此函数添加到它,但我不知道函数的属性,尤其是'ptg代码'.

有没有办法确定这个第三方函数的ptg代码(我假设这类似于操作码),或者是否有某种方法来欺骗模块让我写出这些函数而不必知道这些细节?还是我没想过的第三个计划?

excel perl worksheet-function

5
推荐指数
1
解决办法
308
查看次数

如何使VBA代码兼容Office 2010 - 64位版本和旧版Office

当我们迁移到office 2010-64位版本时,我发现了以下函数调用的问题.

Private Declare Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Run Code Online (Sandbox Code Playgroud)

根据http://msdn.microsoft.com/en-us/library/ee691831.aspx链接提供的信息.我已经更改了上面的调用,它在Office 2010 64位版本上运行良好.

Private Declare PtrSafe Sub CopyMem Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long)
Run Code Online (Sandbox Code Playgroud)

问题是,我需要同样调用以处理旧的Office版本,并且它会在旧版本上引发编译错误.

有谁知道如何使这个电话适用于办公室2010和旧办公室版本.

vba ms-office 32bit-64bit

5
推荐指数
1
解决办法
2万
查看次数

Excel公式来计算不重叠的细胞范围?

假设我在A1到A20中有数字,我想在A列中将5个单元格的非重叠范围相加并将结果存储在E列的单元格中,它看起来像这样(如果公式被输入到每个E列单元格中)手动地):

E1 = SUM(A1:A5)
E2 = SUM(A6:A10)
E3 = SUM(A11:A15)
E4 = SUM(A16:A20)
Run Code Online (Sandbox Code Playgroud)

但是,我不想手动将公式键入E单元格.我希望能够在E1中选择公式并将其向下拖动到E4,同时保持A中5个单元格的非重叠范围!Excel默认情况下不会给我这种行为,而是这样做:

E1 = SUM(A1:A5)
E2 = SUM(A2:A6)
E2 = SUM(A3:A7)
E4 = SUM(A4:A8)
Run Code Online (Sandbox Code Playgroud)

看看每个SUM()函数中5个单元格的范围是如何重叠的?例如A1:A5和A2:A6.那不是我想要的.

那么,什么是能让我这样做的公式呢?基本上,下面的伪代码可以工作,但我似乎无法在Excel中实现类似的东西:

SUM(CELL(COLUMN, (CURRENT_ROW - 1) * 5 + 1):CELL(COLUMN, (CURRENT_ROW - 1) * 5 + 5))
Run Code Online (Sandbox Code Playgroud)

例如,对于E2,CURRENT_ROW = 2,意味着它看起来像这样:

SUM(CELL(A, (2 - 1) * 5 + 1):CELL(A, (2 - 1) * 5 + 5))
= SUM(CELL(A, 6):CELL(A, 10))
Run Code Online (Sandbox Code Playgroud)

此伪代码假定CELL具有方法签名CELL(行,列).

excel worksheet-function

5
推荐指数
1
解决办法
8738
查看次数

如何对包含错误的命名值范围求和?

我有一个Excel电子表格,它从我需要运行计算的其他来源导入数据.我需要处理的数据在命名范围内 - 它恰好在C12:C36范围内 - 但它被称为"SumData".

此范围内的值包含许多错误,目前包括#NUM!和#N/A,但可能包含其他错误.我需要总结这些价值观.

我理解如何做总和公式:

=SUM(SumData)
Run Code Online (Sandbox Code Playgroud)

要么

=SUM(C12:C36)
Run Code Online (Sandbox Code Playgroud)

我也可以使用IFERROR来检查错误:

=IFERROR(C12:C36, 0)
Run Code Online (Sandbox Code Playgroud)

但IFERROR似乎只检查当前相应的行到我输入的公式.即如果我的公式是在D12中输入的,它只检查行C12上的错误,并返回该值(如果C12包含错误,则返回0).

如果我把两者结合起来:

=SUM(IFERROR(SumData,0))
Run Code Online (Sandbox Code Playgroud)

我没有得到有效的返回值.它基本上给了我最近的相应行 - 例如:

    C      D
    -----------
12  #NUM!  
13  2      =SUM(IFERROR(SumData,0)) = 2 (I would expect this to produce 48)
14  5
15  7
16  #N/A
17  23
18  6
19  5
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

excel worksheet-function excel-2010

5
推荐指数
1
解决办法
2万
查看次数

存储过程中动态形成的SQL是否否定了存储过程的用途?

我们现在有10到12年的旧项目.它使用的是我们现在转移到SQL2008的SQL2000.

在执行此任务时,我发现存储过程接受参数,然后将查询构造为字符串,然后使用EXEC执行命令.

CREATE PROCEDURE MyProc
  (@TableName varchar(255),
   @FirstName varchar(50),
   @LastName varchar(50))
AS

    -- Create a variable @SQLStatement
    DECLARE @SQLStatement varchar(255)

    -- Enter the dynamic SQL statement into the
    -- variable @SQLStatement
    SELECT @SQLStatement = "SELECT * FROM " +
                   @TableName + "WHERE FirstName = '"
                   + @FirstName + "' AND LastName = '"
                   + @LastName + "'"

    -- Execute the SQL statement
    EXEC(@SQLStatement)
Run Code Online (Sandbox Code Playgroud)

这是一个糟糕的方法.这是否会破坏存储过程(预编译查询权益)的好处?

sql t-sql sql-server

5
推荐指数
1
解决办法
342
查看次数

带有参数的Excel VBA CommandBar.OnAction很难/不能按预期执行

所以,我已经谷歌搜索了,似乎在制作自定义弹出菜单时,如果想要传递参数,那么这是可能的,但对我来说有两个主要问题:

1)您调用的函数将执行,但您将无法在其上激活断点,甚至无法使用Stop.

2)奇怪的是它似乎被召唤两次,这也不是很有帮助.

代码说明(请放入模块而不是表格中)

Option Explicit

Sub AssignIt()

    Dim cbrCmdBar As CommandBar
    Dim strCBarName As String

    On Error Resume Next

    strCBarName = "MyNewPopupMenu"

    'Delete it first so multiple runs can occur without appending
    Application.CommandBars(strCBarName).Delete

    ' Create a menu bar.
    Set cbrCmdBar = Application.CommandBars.Add(Name:=strCBarName, Position:=msoBarMenuBar)

    ' Create a pop-up menu.
    strCBarName = "MyNewPopupMenu"
    Set cbrCmdBar = Application.CommandBars.Add(Name:=strCBarName, Position:=msoBarPopup)

    'DEFINE COMMAND BAR CONTROL
    With Application.CommandBars(strCBarName).Controls.Add(Type:=msoControlButton)
    .Caption = "MyMenu"
    .OnAction = BuildProcArgString("MyProc", "A", "B", "C") 'You can add any number of …
Run Code Online (Sandbox Code Playgroud)

excel events vba

5
推荐指数
2
解决办法
2万
查看次数

Excel 2007/2010基于公式的色阶条件格式

假设我有以下表结构(A1:C3)

     A   B   C
1    H1  H2  H3
2    1   1   3
3    4   5   4
Run Code Online (Sandbox Code Playgroud)

如何应用具有以下条件的条件格式:

  • 只有标题单元格(H1,H2,H3)被着色
  • 着色方案是2或3色标度
  • 用于计算颜色的值应为A2/A3,B2/B3,C2/C3(范围为0-1)

注意:我不是在寻找VBA解决方案,因为我可以自己制作,但如果你有一些疯狂的1衬里,请告诉:)
注意:我不想应用很多规则,如if x<0.3 red,if 0.3<x<0.6 orange等等.

这有什么清洁的解决方案吗?
可以根据公式的值应用3色标度吗?

excel conditional-formatting excel-2007

5
推荐指数
1
解决办法
2万
查看次数

错误GoTo不工作; 代码中断

我正在编写一个VBA函数,用于将数据从一个表导入到Access中的另一个表.我导入的表有更严格的数据约束(即类型,大小等),所以我期待很多错误.

我不希望筛选出现的每个VBA错误,而是希望我的记录集循环跳过整个当前记录,并在遇到错误时在单独的表中记录它.所以我插入了其他每一行On Error GoTo RecordError.但由于某种原因,它并没有处理每一个错误.我的代码只是打破并告诉我错误是什么.我已经选中了"未处理的异常中断"选项.

这是一个应该解释它的截图. 即使它本身,这个截图似乎对我没有意义.

为什么它会在错误处理程序之后立即打破?

error-handling ms-access vba access-vba

5
推荐指数
1
解决办法
2万
查看次数

在浏览器中显示HTML标记而不进行渲染

开始实现Javascript,我需要进行故障排除,并希望将HTML输出到屏幕而不进行渲染.我可以通过访问元素(在IE中)

document.getElementById("test").outerHTML
Run Code Online (Sandbox Code Playgroud)

我想,但我不能证明我能确定的是什么.

那么我该怎么做才能让document.write显示整个元素,包括标签?

javascript debugging outerhtml

5
推荐指数
2
解决办法
2万
查看次数