根据列值将 sheet 1 的行转置为 sheet2

Transpose rows of sheet 1 to sheet2 based on a column value

我下面有两个 sheet。我还在 sheet here.

中添加了示例数据和所需的输出

帖子 Sheet:

 id |   title   |  image   
 1  |  title 1  |  1.jpg   
 2  |  title 2  |  2.jpg   
 3  |  title 3  |  3.jpg   

元数据Sheet:

  meta_id |  meta_key      |  value   |  post_id
     1    |  meta_title    |  1       |     1
     2    |  meta_keyword  |  1       |     1
     3    |  meta_likes    |  1       |     1
     4    |  meta_title    |  2       |     2
     5    |  meta_keyword  |  2       |     2
     7    |  meta_title    |  3       |     3
     8    |  meta_keyword  |  3       |     3
     9    |  meta_likes    |  3       |     3

如您所见,不能保证每个 post 都会拥有所有元数据。

每个sheet的解释:

帖子 Sheet -

Posts sheet consist of a list of posts, its title and image. id column in it is unique and will never repeat. So basically one post will have one row.

元数据Sheet-

Metadata sheet consists of various information related to an individual post. It contains key-value data with a mapping to the main post sheet via the post_id column.

两者需要怎么合并-

Each metadata in the metadata sheet should be added to relevant rows in the posts sheet based on the post_id column in metadata. So after merging a row in the posts sheet will have columns named meta_title, meta_keyword & meta_likes.

合并后 headers 列的示例如下所示:

meta_id | meta_key  |  value  |  meta_title | meta_keyword | meta_likes

我试过,但是,它只在meta_table只有一把钥匙的情况下有效。在我的例子中,元表可以包含多个键和值。

this sheet 中添加了示例数据和所需的输出。

this shared sheet 上,根据原始 post 中的评论,我创建了一个名为 MK.Help 的新选项卡,其中我留下了两个选项。第一个包含两个公式,第二个只有一个。

单元格 A1 中的这个公式,只是带来了 posts:

=QUERY(Posts!A:C,"where B<>''")

此公式为每个 post.

填充元数据
=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A&D1:F1,{Metadata!D:D&Metadata!B:B,Metadata!C:C},2,0)))

还有另一个可能更简单的选项,它只是以固定方式 QUERY()s 元数据。也就是说,您无法控制列的顺序,它们按字母顺序排列。

=QUERY(Metadata!A:D,"select D,MAX(C) where D is not null group by D pivot B")