小编Sco*_*ner的帖子

使用INDEX/MATCH进行三维查找

这个问题从已删除的问题中略有改进

对于那些可以看到已删除帖子的人,可以从这里获取:https://stackoverflow.com/questions/39793322/three-dimensional-lookup-no-concatenate-or-named-ranges-excel


我正在尝试进行没有命名范围或连接的三维查找.简化,我的数据在表格上:

    Column1 Column2 Column3
Scott           
P   1       2       3
M   4       5       6
N   7       8       9
George          
P   10      11      12
M   13      14      15
N   16      17      18
Run Code Online (Sandbox Code Playgroud)

我现在想要搜索特定的名称,然后搜索该名称表中的特定字母,然后我想将此行号与特定列匹配.

我尝试了一个简单的INDEX/MATCH:

=INDEX(A:D,MATCH("M",A:A,0),MATCH("Column1",1:1,0))
Run Code Online (Sandbox Code Playgroud)

这适用于第一个名称但不是任何其他名称,因为它找到了第一个实例M.

如何修改它以查找其他名称?


我已在下面回答,但想看看是否有人有更好的解决方案.

excel excel-formula

22
推荐指数
3
解决办法
7385
查看次数

如何在excel中使用VBA删除'*'或'-'字符后的文本?

我编写了以下代码来删除一行中使用 VBA 中的一行中的“*”或“-”字符之后的文本,但它给出了错误。任何人都可以帮忙吗?

Sub Removetext()

For each c In Range("A1:ZZ1")
    c.Value = Left(c.Value, InStr(c.Value, "-") - 1)
Next C

End Sub
Run Code Online (Sandbox Code Playgroud)

excel

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

从另一个表更新表值

我有一个工作簿,其表大小约为20000行,52列.有时,我需要一次更新选定行的百分比.我希望使用宏来根据行中的值更新选择单元格,由第二个较小的表格映射,更新的值将输入到表1中.几乎像VLOOKUP函数,但不是如果找不到条目,​​则擦除单元格.例如,根据主机ID更改电话号码.

我尝试在下面的代码中使用数组执行此操作,以获得表1中的一组特定值,但我的值未更新.我的VBA有点生疏,所以如果有人可以查看并协助让它运行,我们将不胜感激.我想最终根据表头更新表中的任何条目.

Sub NewNameandCostCenter()
Dim myList, myRange
Dim sht As Worksheet
Dim sht2 As Worksheet
Dim LastRow As Long
Dim LastColumn As Long
Dim StartCell As Range
Dim LastRow2 As Long
Set sht = Worksheets("NewNameMacro")
Set sht2 = Worksheets("ALL")
Set StartCell = Range("A2")

'Find Last Row and Column
  LastRow = sht.Cells(sht.Rows.Count, StartCell.Column).End(xlUp).Row
  LastColumn = sht.Cells(StartCell.Row, sht.Columns.Count).End(xlToLeft).Column
'set myList array
Set myList = sht.Range(StartCell, sht.Cells(LastRow, LastColumn))
LastRow2 = sht.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
'set myRange array
Set myRange = Sheets("ALL").Range("J2:M" & LastRow2)
'Update …
Run Code Online (Sandbox Code Playgroud)

excel vba

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

创建关联 ID

我有下表:

Account_Number  Parent_Account  Child_Account
R003247         R000355         R000002
R000355         NULL            R003247
R000002         R003247         NULL
R004853         NULL            R028636
R004853         NULL            R028638
R004853         NULL            R028637
R028636         R004853         NULL
R028638         R004853         NULL
R028637         R004853         NULL
Run Code Online (Sandbox Code Playgroud)

可以加载:

create table dbo.temptable
(Account_Number varchar(10),
Parent_Account varchar(10),
Child_Account varchar(10))

insert into dbo.temptable
values
('R003247','R000355','R000002'),
('R000355',NULL,'R003247'),
('R000002','R003247',NULL),
('R004853',NULL,'R028636'),
('R004853',NULL,'R028638'),
('R004853',NULL,'R028637'),
('R028636','R004853',NULL),
('R028638','R004853',NULL),
('R028637','R004853',NULL)
Run Code Online (Sandbox Code Playgroud)

此表表示帐号的拆分和重新分配。它与跟踪地块的分割和组合有关。

前三行,如上表所示,应该组合在一起,因为它来自R000355--> R003247-->R000002

如上表所示,最后 6 个也应分组,因为它显示R004853分为三个R028636, R028637, R028638

我已经尝试了很多这样的变化:

SELECT CE.*,TT.ID
FROM dbo.temptable CE 
INNER JOIN …
Run Code Online (Sandbox Code Playgroud)

sql-server

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

谷歌工作表中的脚本用于清除,但不删除过滤器

我在为谷歌表格编写脚本方面是全新的,所以我希望你们中的一些人可以帮助/指导我一点。

所以理想情况下,我想要一个脚本来清除(而不是删除)我的工作表中的所有过滤器。然而,这对我来说很复杂(如果你们中的一些人有这样的脚本,我很想看到它:))

相反,我做了这个(二手录音机):

function Clear_Filter() {
  var spreadsheet = SpreadsheetApp.getActive();
  spreadsheet.getRange('A5').activate();
  spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(1);
  spreadsheet.getRange('B5').activate();
  spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(2);
  spreadsheet.getRange('C5').activate();
  spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(3);
  spreadsheet.getRange('G5').activate();
  spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(7);
  spreadsheet.getRange('J5').activate();
  spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(10);
  spreadsheet.getRange('M5').activate();
  spreadsheet.getActiveSheet().getFilter().removeColumnFilterCriteria(13);
};
Run Code Online (Sandbox Code Playgroud)

所以我的过滤器设置在第 5 行。首先,我对所有列(我有 20 个)进行了上述操作,但问题是,代码非常慢:(所以现在我正在使用我最常使用的列,过滤时,但代码仍然很慢。最糟糕的是,代码一次运行一列(我们在代码中看到),当代码完成时,我最终进入最后一列。

我可以做点什么吗?当我运行代码时,我不希望我的工作表窗口不断右转,然后最终出现在 M 列中。

我将不胜感激任何帮助!谢谢

javascript google-sheets google-apps-script

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

从带有附加条件的字符串中提取8位数字

我需要从具有多个条件的字符串中提取数字。

  1. 它必须以1-9开头,而不是0,并且它将有8位数字。像23242526或65478932
  2. 之前将有一个空格或一个文本变量。像MMX:23242526或bgr65478932
  3. 它可能在极少数情况下出现:23,242,526
  4. 它以emty空格或文本变量结尾。

以下是几个示例:

  • RE:Markitwire:120432889:Mx:24,693,059我需要得到24693059

  • 自动回复:Auftrag zurÜbertragungIRD Ref-Nr。MMX_23497152需要获取23497152

  • 固件:CGMSE 2019-2X A1AN XS2022418672合同24663537需要获得24663537
  • RE:BBVA-MAD MMX_24644644 + MMX_24644645需要获得24644644、24644645

现在,我正在使用regexextract函数(在此网站上找到),该函数提取以2开头的8位数字。但是,它也将从表达式TGF00023242526提取数字,这是不正确的。而且,我不知道如何在代码中添加其他条件。

=RegexExtract(A11, ""(2\d{7})\b"", ", ")
Run Code Online (Sandbox Code Playgroud)

先感谢您。

Function RegexExtract(ByVal text As String, _
                      ByVal extract_what As String, _
                      Optional seperator As String = "") As String
Dim i As Long, j As Long
Dim result As String
Dim allMatches As Object
Dim RE As Object
Set RE = CreateObject("vbscript.regexp")
RE.Pattern = …
Run Code Online (Sandbox Code Playgroud)

regex string vba extract extraction

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

Mod在使用公式时返回不同的输出

我得到了相互矛盾的结果。

用公式:

=MOD(1,1)

我得到0正如人们所期望的那样。

但如果我1通过公式来解决这个问题:

=MOD((1.2-1)/0.2,1)

我明白了1

即使我将公式拆分为各个部分:

=(1.2-1)/0.2

=MOD(B5,1)

我得到 1

所以问题是,“为什么不同?”

在此处输入图片说明

excel excel-formula

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

使用 FILTERXML 之后返回子字符串

在现已删除的问题中,OP 要求返回1.30.4来自1^1.3%2^0.4

我立即想到了 FILTERXML。

我能够做到这一点:

=MID(FILTERXML("<a><b>"&SUBSTITUTE(A1,"%","</b><b>")&"</b></a>","//b"),FIND("^",FILTERXML("<a><b>"&SUBSTITUTE(A1,"%","</b><b>")&"</b></a>","//b"))+1,99) 
Run Code Online (Sandbox Code Playgroud)

但这似乎太重复了。

substring-after在 XPATH 1.0 中找到了它,但无法让它执行我想要的操作。我首先尝试:

=FILTERXML("<a><b>"&SUBSTITUTE(A1,"%","</b><b>")&"</b></a>","//b[substring-after(., '^')]")
Run Code Online (Sandbox Code Playgroud)

但这返回了完整的字符串和:

=FILTERXML("<a><b>"&SUBSTITUTE(A1,"%","</b><b>")&"</b></a>","substring-after(//b, '^')")
Run Code Online (Sandbox Code Playgroud)

刚刚返回了一个错误。

有没有办法只使用 FILTERXML 返回所需的数字?

excel excel-formula

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

Excel 公式部分从表数据动态构建数组

我不知道使用单个单元格公式是否可以实现这一点。需要 Excel 2010 兼容(及更高版本)的公式。目的是使用如下公式

{=SUM(INDEX(built_Array;N(IF(1;ROW(INDIRECT(x1 &":"& x2)))))} 
Run Code Online (Sandbox Code Playgroud)

其中 x1 和 x2 是对包含与构建数组兼容的起始索引和结束索引的单元格的引用。

Excel 公式的“构建数组”部分应根据其他地方的两个表中的数据构建:表上的标识符用于选择实际内容(使用查找 Excel 函数)。一张表包含重复值的数量,另一张表包含实际值。

例如:

P1 P2 P3 P1 P2 P3
i01 2 4 i01 20.0 20.6
i02 3 i02 10.0
i03 2 7 9 i03 30.0 30.4 30.2
i04 4 2 i04 15.0 15.1
i05 5 i05 10.0

因此 i03 的构建数组将是

{30.0;30.0;30.4;30.4;30.4;30.4;30.4;30.4;30.4;30.2;30.2;30.2;30.2;30.2;30.2;30.2;30.2;30.2} 
Run Code Online (Sandbox Code Playgroud)

对于 i04 来说是

{15.0;15.0;15.0;15.0;15.1;15.1}
Run Code Online (Sandbox Code Playgroud)

那么,对于 i04 取第 3 到第 5 个值,上面的数组 (ctrl-shift-enter) 公式的结果将是 45.1,而对于 i04 取第 2 到第 3 个值,结果将是 30。

我发现困难的是从公式内的表构建数组,特别是因为每个标识符可能具有不同数量的组件。

我有预感,这应该是可行的,在其他编程语言中,会使用迭代或递归,但我想探索这种方式,而不是恢复到 VBA(如果存在概念上的原因,这在 Excel …

excel excel-formula dynamic-arrays

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

知道如何删除或重新安装 VBA 吗?

我的 Office VBA 编辑器超级缩放到菜单面板的左角。我可以使用快捷方式访问设置,但\xc2\xb4t 没有找到修复它的方法。

\n

我重新安装了 Office,但\xc2\xb4 没有帮助。我也尝试通过注册表删除设置,但没有效果。

\n

(https://i.stack.imgur.com/4lWip.gif)

\n

excel vba editor

5
推荐指数
0
解决办法
160
查看次数