求助,有什么办法把数量排一起,金额排一起?
vba吧
全部回复
仅看楼主
level 7
求助,有什么办法把数量排一起,金额排一起?
2024年08月28日 05点08分 1
level 7
想写一个vba代码,for each rng in [a1:f1,如果rng包含“库存数量“字样,则rng整列往左偏移到第一个rng包含“库存数量“的列后面,比如标题行A1=1月库存数量,b1=1月库存金额,c1=2月库存数量,d1=2月库存金额,我要实现A1=1月库存数量,b1=2月库存数量,c1=1月库存金额,d1=2月库存金额,就是先把库存数量排了,再到库存金额
2024年08月28日 05点08分 2
level 7
@流光把人抛º @🌴菠萝蜜🌴 两位老师,可否看看👀
2024年08月28日 05点08分 3
level 1
图片点不了
Option Explicit
Sub demo()
Dim arr, i%, col%, n%
arr = Range("a1").CurrentRegion
ReDim res(1 To UBound(arr), 1 To UBound(arr, 2))
For col = 1 To UBound(arr, 2) Step 2
n = n + 1
For i = 1 To UBound(arr)
res(i, n) = arr(i, col)
res(i, n + 3) = arr(i, col + 1)
Next i
Next col
Range("A16").Resize(UBound(res), UBound(res, 2)) = res
End Sub
2024年08月28日 05点08分 4
有没有办法在原表上移动呢?因为原表的行数有十几万行,复制到一个新的区域不太理想[惊哭]
2024年08月28日 05点08分
@藤原文太⚡ 最后面的range("A16") 改成目标的单元格就行了,例如改成A1,就会在A1上写入。这些都是基础的东西,自己弄一下就行了,还有下次截图截大一些,PC端完全点不了图片
2024年08月28日 05点08分
@流光把人抛º 不行的,下标越界,因为不是规律的排列,只有n1:Bo1的单元格有库存数量和库存金额,a1:n1是描述性的东西
2024年08月28日 06点08分
@流光把人抛º 然后我截图放不出去,Excel太大了,截图出来内容变得很渺小
2024年08月28日 06点08分
level 7
2024年08月28日 05点08分 5
level 1
截图的数据不是挺规律的吗?文件数据脱敏或者按真实情况模拟一部分数据,然后发上来,不然给你写了,你也不会用
2024年08月28日 06点08分 6
公司电脑源文件发不出来,只发得到截图,Excel要解密才能发出去,我没有解密权限。截图前面还是规律的,后面他就不规律了,就是不能看成是“库存数量”和“库存金额”相间排序,后面的他会隔一两个库存金额才到一个库存数量。
2024年08月28日 06点08分
level 1
沟通有点费劲啊,你试下是不是你想要的效果
Sub demo()
Dim arr, brr, crr, res, dic As Object, i&, j%, col%, lastRow&, n%
col = Cells(1, Columns.Count).End(1).Column
lastRow = Cells(Rows.Count, "n").End(3).Row
arr = Range("n1", Cells(lastRow, col))
Set dic = CreateObject("scripting.dictionary")
dic("数量") = "": dic("金额") = ""
For i = 1 To UBound(arr, 2)
If InStr(arr(1, i), "数量") Then
dic("数量") = dic("数量") & "," & i
Else
dic("金额") = dic("金额") & "," & i
End If
Next i
brr = Split(Mid(dic("数量"), 2), ",")
crr = Split(Mid(dic("金额"), 2), ",")
ReDim res(1 To UBound(arr), 1 To UBound(arr, 2))
For i = 0 To UBound(brr)
n = n + 1
For j = 1 To UBound(arr)
res(j, n) = arr(j, Val(brr(i)))
res(j, n + UBound(arr, 2) / 2) = arr(j, Val(crr(i)))
Next j
Next i
Columns("n").Resize(, UBound(res, 2)) = ""
Range("n1").Resize(UBound(res), UBound(res, 2)) = res
End Sub
2024年08月28日 06点08分 7
厉害啊,是这样的
2024年08月28日 07点08分
这个代码我发现了一个问题,就是数量和金额如果不是1:1的,那么运算的结果就不对了,就是假如有11个数量,有17个金额,那么就不对了。
2024年09月04日 05点09分
1