Excel:从列B中的重复列表中删除列A值?

时间:2016-06-23 13:12:25

标签: excel excel-vba excel-formula vba

在A栏中,我有一系列按数字顺序排列的数字。每个号码都在自己的单元格中。

在B栏中,我有一个包含所有这些数字的单元格。 A列中的每一行都在B列中包含此单元格的副本。

例如:

A1:100

A2:200

A3:300

B1:100 200 300

B2:100 200 300

B3:100 200 300

我需要一种方法从列B中的列表中删除列A值,以便列B中的每个列表都不包含其A列中的值。

例如:

A1:100

A2:200

A3:300

B1:200 300

B2:100 300

B3:100 200

基本上与this question相反。我怎样才能实现这一点,最好没有VB?

Here's the entire dataset on Pastebin.

3 个答案:

答案 0 :(得分:1)

  • 基于注释,数字由CHR(10)
  • 分隔

假设您的数据在A1:B3范围内 在其间插入一列,这样您就会有三列,其中包含A列和C列中的数据,中间有空白列B. 将此公式放在单元格B1中并向下拖动。

.OrderBy(orderByExpression).Desc

你可以在B栏中得到你的结果:

enter image description here

答案 1 :(得分:0)

如果将单元格b1中的A1值替换为空白值,它不起作用?你试过吗?

Range("A1").Select
Value1 = ActiveCell.Value
ActiveCell.Offset(0, 1).Replace What:=Value1, Replacement:=" ", LookAt:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False

答案 2 :(得分:0)

与其他评论类似的想法,我有一个疯狂的嵌套公式,但也许值得一试?

=TRIM(SUBSTITUTE(" "&SUBSTITUTE(B1,CHAR(10)," ")&" "," "&A1&" "," "))

...替换CHAR(10)仅用于比较,并在每个值的任一侧添加空格以定位例如100 in 1002