5

我想知道是否有一种方法可以从另一个列表中替换单元格值而无需编写 VB 脚本。

这是我要解决的问题:

我在一列中有姓氏:

史密斯
琼斯
泰勒
等。

我有另一个带有 ID 的列,例如

史密斯_ID泰勒_B
琼斯
_C

我想SmithSmith_ID, JoneswithJones_C等替换。显然我的列表比 3 个条目长得多。

4

7 回答 7

2

他可以做到。

  • 通过“文本到列”提取带有“_”字符的列 ID

专栏
史密斯
琼斯
泰勒

B柱
史密斯
泰勒
琼斯

C 列
ID
B
C

现在写入以下公式

=CONCATENATE(A1;"_";VLOOKUP(A1;$B$1:$C$3;2;FALSE))

我希望你会

于 2013-05-04T09:13:04.467 回答
1

如果您在 2 个列表之间有一个共同的值,那么您可以使用Vlookup()(请参阅链接以获取更好的示例)来匹配 2。

使用您的示例,您有 Sheet1 说:
Smith
Jones
Taylor

在 Sheet2 中,您有:
Smith 4
Jones 9
Taylor 6

然后这样做:

  1. 在 Sheet1 中,添加一个带有公式的列=vlookup(A1,Sheet2!$A$3:$B$3,2,False)。这将为第一行返回 4,第二行返回 9,依此类推。
  2. (可选)如果您想完全摆脱原始值,则可以复制和粘贴值并删除原始列或仅隐藏原始列。

这是你要找的吗?

于 2013-05-03T23:15:38.000 回答
1

我有 2 列,一列是供应商名称,第二列是供应商地址,但它也包含供应商名称。我需要去掉供应商名称,这会让我留下没有名称的供应商地址。

例如,如果一列有“Con Ed”,下一列有“Con Ed 123 Street, New York, NY 11111”,我需要将“Con Ed”替换为 null 并且只有“123 Street, New York, NY 11111” “在一个列中。

这就是我所做的,我也会让你知道你可以做些什么来实现你的目标。

首先,我创建了一个新列并将其设置为供应商名称的长度(使用 LEN() 函数)。

然后我创建了另一个新列并将其设置为供应商地址的长度。

第三列被设置为使用 Right() 函数。其中文本是供应商地址,长度是地址的长度减去供应商名称的长度。

因此请考虑:“Con Ed 123 Street, New York, NY 11111” 第一列:(供应商长度):len(Con Ed) = 6 第二列:(供应商地址长度):len(Con Ed 123 Street, New York , NY 11111) = 37 第三列:Right([供应商地址], 31 (37-6)) = ", New York, NY 11111"

最后,我刚刚将 TRIM 函数应用于第三列。

在您的情况下,您只想使用 Concatenate 函数来附加原始列和新列。

因此,总而言之,您将拥有以下列:

第 1 列:姓名:(史密斯、琼斯、泰勒)

Column2:ID:(Smith_ID,Taylor_B,Jones_C)

第 3 列:Len([姓名])

第 4 列:Len([IDs])

Column5:“替换”函数 = TRIM(Right([IDs], ([Column4] -[Column3] ))

Column6:将字符串重新组合在一起 =Concatenate([Column3],[Column5])

于 2018-01-03T19:27:25.393 回答
1

要在一般情况下回答这个问题,假设您有如下两列:

史密斯、琼斯、泰勒、凯文、耶尔、阿什顿……

B 约翰哈佛、耶尔南加州大学、凯文克鲁斯、阿什顿邦德、史密斯斯通、泰勒斯派...

这里的经典案例是您有两个非常相似的列,只是略有不同。这可能是一个错字或其他一些错误。如果我们假设 B 列是您想要的正确的东西,那么您要做的是用 B 列中的单元格值替换 A 列中的单元格值。

因此,对于 A 中的每个单元格,您想知道其近似匹配在 B 列中的位置。例如,给定 A1(Smith),您想知道 Smith Stone 在哪里,在本例中为 B5。

从新列 C 开始,结合匹配函数和通配符,用以下公式填充 C1:

row_index=match(A1&" ",$B$1:$B$6,0)

您现在提取对应于 A 列的每个近似匹配的 row_index。然后使用

=index($B$1:$B$6,row_index,0)

在单元格 C1 中返回“Smith Stone”。其他细胞也一样。

*备注:此方法的最大缺陷是它需要 B 中的近似匹配,因为 A 中的每个单元格都应该是唯一的。

于 2017-04-10T11:31:46.997 回答
0

=INDEX('All_Linguists_All_ProjectsFri J'!$DA$2:'All_Linguists_All_ProjectsFri J'!$D$71355,MATCH(A2,'All_Linguists_All_ProjectsFri J'!C:C,FALSE),1)

没有时间解释它,但是如果您知道如何在excel中编写公式,这应该很有用。抱歉没有解释。

于 2013-10-30T11:05:46.527 回答
0

希望您使用的是 excel,并且您想从另一个相同原始的单元格中替换一个原始单元格的值,并且必须对整个列进行此操作,而不是形成选定的原始单元格。

在这种情况下,您可以复制要保留的值(即 ID 列),然后在“姓氏”列中复制相同的值。

如果值是相同的原始值,则没有问题,并且从您的查询看来,值是相同的原始值。

于 2017-04-21T06:08:03.597 回答
0

我在单元格 B1 中搜索字母“s”时使用此公式,如果找到,则将“加法”一词连接到单元格 A1 的值,否则只取单元格 A1 的值。

=IF(ISNUMBER(SEARCH("s",B1))=TRUE,CONCAT(A1, "  addition"),A1) 
于 2019-10-02T17:18:18.103 回答