这是税务电子网站下载的表格,实在没法看下去,如下图所示
想请问各位大神,怎么合并和加总数据?
例如上图的发票001,甲公司的,系统却把它分成了3份,分别是100元的玉米,300元的菜油,200元的花生。
明明是一张发票,却分成3份,我想做成以下的,图片二的格式,如下:
以发票号码为准,相同的发票号码都合并在一起(不能以甲公司为准,因为甲公司可能开了很多张不同的发票),例如,发票号码001的3个甲公司合并在一起了,金额也合并成了600元,最最最重要的是,货物那里,也合并成了“玉米,菜油,花生”。这样合并后,简直是一目了然啊。看起来也舒服多了,做数据也十分方便。
(如果货物那里,无法加总成“玉米,菜油,花生”,至少也要显示“玉米”啊,“菜油”这样子,要不然,合并后,货物那里没法看到数据,也太痛苦了)
还有,弄成图片二的格式后,数据可以复制黏贴的吧?
请问各位大神,用excel或wps怎么操作?(如果这个合并功能是wps付年费的话,就算了哈,这里是jsl,当然是用最优惠的方式达到这个功能哈)
小小心意,6金币奉上,先到先得。答得好的,可以重复打赏哈。谢谢各位大神

想请问各位大神,怎么合并和加总数据?
例如上图的发票001,甲公司的,系统却把它分成了3份,分别是100元的玉米,300元的菜油,200元的花生。
明明是一张发票,却分成3份,我想做成以下的,图片二的格式,如下:
以发票号码为准,相同的发票号码都合并在一起(不能以甲公司为准,因为甲公司可能开了很多张不同的发票),例如,发票号码001的3个甲公司合并在一起了,金额也合并成了600元,最最最重要的是,货物那里,也合并成了“玉米,菜油,花生”。这样合并后,简直是一目了然啊。看起来也舒服多了,做数据也十分方便。
(如果货物那里,无法加总成“玉米,菜油,花生”,至少也要显示“玉米”啊,“菜油”这样子,要不然,合并后,货物那里没法看到数据,也太痛苦了)
还有,弄成图片二的格式后,数据可以复制黏贴的吧?
请问各位大神,用excel或wps怎么操作?(如果这个合并功能是wps付年费的话,就算了哈,这里是jsl,当然是用最优惠的方式达到这个功能哈)
小小心意,6金币奉上,先到先得。答得好的,可以重复打赏哈。谢谢各位大神

0
难度主要是分别得到新的两列,1是根据原D列合并文字描述、2是根据原E列合并数值。
新的F列:
=TEXTJOIN(", ", TRUE, IF(A2:A999=A2, D2:D999, ""))
新的G列:
=SUMIF(A2:A999, A2, E2:E999)
新的F列:
=TEXTJOIN(", ", TRUE, IF(A2:A999=A2, D2:D999, ""))
新的G列:
=SUMIF(A2:A999, A2, E2:E999)

0
@Duckruck
ChatGPT写的这个宏(大体方向上)正确吗?我好奇你怎么向gpt描述清楚这个问题的?直接把楼主的文字和图片发上去吗?
以下是一个VBA宏,可以帮助您合并相同发票号码的数据:
该宏首先会根据发票号码排序数据。
然后,它将合并相同发票号码的金额,并将其货物合并为一个逗号分隔的列表。
最后,它将删除重复的发票号码行。
以下是VBA宏代码:
vba
Copy code
Sub MergeData()
Dim LastRow As Long
Dim i As ...

0
这个简单哦,用awk处理。
1.按照相同的key拼接字符串
假定存在两列,列1是key 发票号码,列2是value 内容。
awk '{key=1;1="";value=$0;sum[key]=sum[key]""value} END {for (i in sum) print i,sum[i]}' file
2.按照相同的key累加值
假定存在两列,列1是key 发票号码,列2是value 金额。
awk '{a[1]+=2}END{for(i in a) printf "%s\t %d \t \n",i,a[i] }' file
1.按照相同的key拼接字符串
假定存在两列,列1是key 发票号码,列2是value 内容。
awk '{key=1;1="";value=$0;sum[key]=sum[key]""value} END {for (i in sum) print i,sum[i]}' file
2.按照相同的key累加值
假定存在两列,列1是key 发票号码,列2是value 金额。
awk '{a[1]+=2}END{for(i in a) printf "%s\t %d \t \n",i,a[i] }' file

0
@scott
以下是一个VBA宏,可以帮助您合并相同发票号码的数据:
该宏首先会根据发票号码排序数据。
然后,它将合并相同发票号码的金额,并将其货物合并为一个逗号分隔的列表。
最后,它将删除重复的发票号码行。
以下是VBA宏代码:
vba
Copy code
Sub MergeData()
Dim LastRow As Long
Dim i As Long
Dim SumAmt As Double
Dim GoodsList As String
' Sort data by Invoice Number
Range("A1").CurrentRegion.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
' Find the last row with data
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow
' Check if the invoice number is the same as the next row
If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
' Sum the amounts
SumAmt = Cells(i, 3).Value
GoodsList = Cells(i, 4).Value
' Loop until a different invoice number is found
Do While Cells(i, 1).Value = Cells(i + 1, 1).Value
SumAmt = SumAmt + Cells(i + 1, 3).Value
GoodsList = GoodsList & ", " & Cells(i + 1, 4).Value
Rows(i + 1).Delete
Loop
' Update the amount and goods list
Cells(i, 3).Value = SumAmt
Cells(i, 4).Value = GoodsList
End If
Next i
End Sub
如何使用:
打开Excel或WPS,并打开您的数据工作簿。
按下 Alt + F11 打开VBA编辑器。
在VBA编辑器中,插入一个新的模块(点击插入 -> 模块)。
将上述代码复制并粘贴到新模块窗口中。
关闭VBA编辑器。
在Excel中,按下 Alt + F8,选择 MergeData 然后点击 运行。
您的数据现在应该已经按照您的要求合并了。
注意:在运行任何宏之前,建议备份您的数据,以防万一出现问题。
这个用函数比较复杂,如果可以用VBA的话,应该比较简单ChatGPT写的这个宏(大体方向上)正确吗?
以下是一个VBA宏,可以帮助您合并相同发票号码的数据:
该宏首先会根据发票号码排序数据。
然后,它将合并相同发票号码的金额,并将其货物合并为一个逗号分隔的列表。
最后,它将删除重复的发票号码行。
以下是VBA宏代码:
vba
Copy code
Sub MergeData()
Dim LastRow As Long
Dim i As Long
Dim SumAmt As Double
Dim GoodsList As String
' Sort data by Invoice Number
Range("A1").CurrentRegion.Sort Key1:=Range("A2"), Order1:=xlAscending, Header:=xlYes
' Find the last row with data
LastRow = Cells(Rows.Count, 1).End(xlUp).Row
For i = 2 To LastRow
' Check if the invoice number is the same as the next row
If Cells(i, 1).Value = Cells(i + 1, 1).Value Then
' Sum the amounts
SumAmt = Cells(i, 3).Value
GoodsList = Cells(i, 4).Value
' Loop until a different invoice number is found
Do While Cells(i, 1).Value = Cells(i + 1, 1).Value
SumAmt = SumAmt + Cells(i + 1, 3).Value
GoodsList = GoodsList & ", " & Cells(i + 1, 4).Value
Rows(i + 1).Delete
Loop
' Update the amount and goods list
Cells(i, 3).Value = SumAmt
Cells(i, 4).Value = GoodsList
End If
Next i
End Sub
如何使用:
打开Excel或WPS,并打开您的数据工作簿。
按下 Alt + F11 打开VBA编辑器。
在VBA编辑器中,插入一个新的模块(点击插入 -> 模块)。
将上述代码复制并粘贴到新模块窗口中。
关闭VBA编辑器。
在Excel中,按下 Alt + F8,选择 MergeData 然后点击 运行。
您的数据现在应该已经按照您的要求合并了。
注意:在运行任何宏之前,建议备份您的数据,以防万一出现问题。