更改Excel中的数据布局

6l7fqoea  于 2023-01-27  发布在  其他
关注(0)|答案(1)|浏览(151)

我从供应商处获得Excel数据。
我想改变布局的格式,这样我就可以更容易地摄取此数据到数据库,如(Postgre / Mysql)

有数以千计的文件在这种格式作为一个文件只包含销售信息在一个日期。
是否有更好或更快的方法来转换此数据,或者创建VBA是唯一的方法?

7gs2gvoe

7gs2gvoe1#

我们绝对可以在VBA中做到这一点!另一方面,当它可以很容易地用Excel公式完成时,为什么还要费心呢?
我的假设:

  • 您正在处理大小可变的数据(区域和项目的数量)
  • 显示为合并的单元格将在实际数据上合并。
  • 我将其设置为使用最大数据范围100行,但很容易更改。
    **步骤1)**确定我们有多少区域和项目:
  • =COUNTA($D$4:$K$4)(区域)x1c 0d1x
  • =COUNTA($C$6:$C$100)(物料)

**第2步)**列出项目,针对区域数重复。

  • 请使用本地行号而不是工作表行号,以使其更具可移植性。

为了重复这个过程,我们将把line#除以总区域数,取整,然后使用它来索引项。不要忘记错误处理来识别何时停止列出项。从现在开始,我们所有的公式都将使用If( *item column* <> "", *show stuff* , *don't show stuff* )。我们可以在以后的步骤中忽略它。

  • =IFERROR(INDEX($C$6:$C$100,MATCH(ROUNDUP(M5/$P$1,0),$B$6:$B$100,0)),"")

**步骤3)**约会超级简单:

  • 只需要为每一项提取相同的日期:=IF($O5<>"",$C$2,"")
    **第4步)**我们将使用Mod()函数创建区域的循环操作。
  • 我花了一段时间来玩这个公式...所以不要问我所有的调整(平移和缩放)是为了什么,只要相信它的工作原理。=IF($O5<>"",INDEX($D$4:$K$4,2*(MOD($M5-1,$P$1)+1)-1),"")

步骤5)“数量”和“价格”是相同的公式,只是“价格”多了一个“+1”

  • 数量= =IFERROR(INDEX($D$6:$K$100,MATCH($O5,$C$6:$C$100,0),MATCH($P5,$D$4:$K$4,0)),"")
  • 价格= =IFERROR(INDEX($D$6:$K$100,MATCH($O5,$C$6:$C$100,0),MATCH($P5,$D$4:$K$4,0)+1),"") x1c4d 1x
    最终产品:

相关问题