小编bat*_*cmd的帖子

缩短Excel“IF”公式?

这个公式确实有效,但它是巨大的:

=IF(X3=B2,K2,IF(X3=B3,K3,IF(X3=B4,K4,IF(X3=B5,K5,IF(X3=B6,K6,IF(X3=B7,K7,IF(X3=B8,K8,IF(X3=B9,K9,IF(X3=B10,K10,IF(X3=B11,K11,IF(X3=B12,K12,IF(X3=B13,K13,IF(X3=B14,K14,IF(X3=B15,K15,IF(X3=B16,K16,IF(X3=B17,K17,IF(X3=B18,K18,IF(X3=B19,K19,IF(X3=B20,K20,IF(X3=B21,K21))))))))))))))))))))

这是它正在做的事情:

If X3 is the same as B2, show the contents of cell K2.
If X3 is the same as B3, show the contents of cell K3.
If X3 is the same as B4, show the contents of cell K4.
...etc etc etc all the way to...
If X3 is the same as B21, show the contents of cell K21.
Run Code Online (Sandbox Code Playgroud)

由于 B2:B21 只是一列单元格,而 K2:K21 也只是一列单元格,有什么办法可以缩短上面的公式,这样它就不会很大了?

我不知道如何将其变成B细胞和K细胞的2个范围。

尝试这样的事情是行不通的: =IF(X3=B2:B21,K2:K21)

因为告诉 Excel 使用:就是告诉它将从 B2 到 B21 以及 K2 …

worksheet-function microsoft-excel

3
推荐指数
1
解决办法
719
查看次数

批处理文件中的 Powershell 命令:从文本文件中删除除带有“foo”和“bar”的行之外的所有行?

我有一个包含以下 3 行的文本文件:

This line contains foo.
This line contains bar.
This line has neither.
Run Code Online (Sandbox Code Playgroud)

我可以在“.bat”文件(在上面的“.txt”文件旁边)中运行以下命令,它会删除文本文件中的所有行,除了包含“foo”的行:

Powershell.exe -Command "gci *.txt | foreach { (cat $_.FullName | ? { $_ -like '*foo*' }) | set-content $_.FullName}"
Run Code Online (Sandbox Code Playgroud)

运行达到预期效果,在文本文件中只留下这一行:

This line contains foo.
Run Code Online (Sandbox Code Playgroud)

现在的问题是:如果我想保留行中包含“foo”“bar”的行怎么办?

到目前为止,我一定已经尝试了大约 40 或 50 种不同的组合,放置管道字符:*foo*|*bar*,去掉星号foo|bar,仅在开头和结尾放置星号:*foo|bar*,使用逗号,不使用逗号,使用分号,不使用分号,-like使用和不使用$_ 以及许多其他方式复制命令。

没有任何效果 - 到目前为止,在每次尝试中,我最终得到的文本文件看起来都一样,原始三行包含 foo(第 1 行)、bar(第 2 行)和两者都不包含(第 3 行)。

为了确保我没有编辑命令并出错,我会定期删除我的编辑并再次运行命令以取出没有“foo”的行并且它可以工作,或者我只是再次粘贴命令,再次测试,然后开始尝试编辑它以包含“bar”,但无济于事。

我最近已经问过这个问题,但我想我对标题的措辞不清楚。有人试图回答它,但他们提供的每个答案都没有奏效,至少当我将命令放入批处理文件并在文本文件旁边运行时,也许它对他们有用,使用不同的方法我是谁,我不知道。

请注意,我在批处理文件中使用了 powershell 命令!我没有在控制台中输入或使用 ps1 脚本。 我不需要做任何这些,因为我上面提到的第一个命令确实可以删除所有带有“foo”的行。

显然,既然这样做有效,该命令可以用作添加的基础,因此它可以在一个命令中处理“foo”和“bar”。 …

windows powershell batch command-line

-3
推荐指数
1
解决办法
46
查看次数