我从供应商处获得Excel数据。我想改变布局的格式,这样我就可以更容易地摄取此数据到数据库,如(Postgre / Mysql)
有数以千计的文件在这种格式作为一个文件只包含销售信息在一个日期。是否有更好或更快的方法来转换此数据,或者创建VBA是唯一的方法?
7gs2gvoe1#
我们绝对可以在VBA中做到这一点!另一方面,当它可以很容易地用Excel公式完成时,为什么还要费心呢?我的假设:
=COUNTA($D$4:$K$4)
=COUNTA($C$6:$C$100)
**第2步)**列出项目,针对区域数重复。
为了重复这个过程,我们将把line#除以总区域数,取整,然后使用它来索引项。不要忘记错误处理来识别何时停止列出项。从现在开始,我们所有的公式都将使用If( *item column* <> "", *show stuff* , *don't show stuff* )。我们可以在以后的步骤中忽略它。
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,"")
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),"")
1条答案
按热度按时间7gs2gvoe1#
我们绝对可以在VBA中做到这一点!另一方面,当它可以很容易地用Excel公式完成时,为什么还要费心呢?
我的假设:
**步骤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最终产品: