如果另一列中存在值,则Excel VBA将转置行集

时间:2016-02-24 14:32:14

标签: excel vba excel-vba

我正在尝试通过VB脚本找到一种方法,将来自A列的行转换为新的工作表,但前提是B列中的值包含数字的行。我有一个约75K行的工作表,我需要这样做,我尝试创建数据透视表,这使我能够将数据转换为当前格式,但我需要数据在列中。

这个棘手的部分是在A列中,我只需要查看所有数字的行而不是其他具有文本的行。

我创建了一个要查看的样本表,其中样本数据位于SOURCE选项卡中,以及我希望数据在TRANSPOSED选项卡中的样子。

https://docs.google.com/spreadsheets/d/1ujbaouZFqiPw0DbO78PCnz25OY2ugF1HtUqMg_J7KeI/edit?usp=sharing

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:0)

更新和答案:
我修改了我的方法并返回原始源数据,该数据不是数据透视表的一部分,并且能够在2个数据源之间使用简单的匹配公式。所以,我的原始数据看起来像这样:

+----------------+---------+--------+--------------+
|      Gtin      |  Brand  |  Name  | TaxonomyText |
+----------------+---------+--------+--------------+
| 00030085075605 | brand 1 | name 1 | cat1         |
| 00041100015112 | brand 2 | name 2 | cat2         |
| 00041100015099 | brand 3 | name 3 | cat3         |
| 00030085075608 | brand 4 | name 4 | cat4         |
+----------------+---------+--------+--------------+

我有另一张包含我需要匹配的数据的表格:

+----------------+---------+
|      Gtin      |  Brand  |
+----------------+---------+
| 00030085075605 | brand 1 |
| 00041100015112 | brand 2 |
| 00041100015098 | brand 3 |
| 00030085075608 | brand 4 |
+----------------+---------+

我在源表中创建了一个新列,并使用了if错误匹配公式:

= IFERROR(!IF(MATCH(A14,data_to_match $ A:$ A,0),"是",),"无&#34)

然后为每一行复制这个公式,大约75K行,非常快速地添加了yes或no。

+----------------+---------+---------+--------+--------------+
|      Gtin      | matched |  Brand  |  Name  | TaxonomyText |
+----------------+---------+---------+--------+--------------+
| 00030085075605 | yes     | brand 1 | name 1 | cat1         |
| 00041100015112 | yes     | brand 2 | name 2 | cat2         |
| 00041100015098 | no      | brand 3 | name 3 | cat3         |
| 00030085075608 | yes     | brand 4 | name 4 | cat4         |
+----------------+---------+---------+--------+--------------+

最后一步是过滤Yes值,我拥有了我需要的所有数据。

我的错误是首先进入数据透视表,这使数据处于一种非常时髦的格式,导致我必须进行转置,这并不是必需的。希望这可以帮助别人......