Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2314|回复: 7

[已解决]好好学习,天天向上

[复制链接]
发表于 2017-3-22 15:03 | 显示全部楼层 |阅读模式
半桶水的我,画不出瓢,敬衣大虾指导
最佳答案
2017-3-22 17:55
答案已上传,请下载查看

VBA设置问题.rar

17.81 KB, 下载次数: 5

发表于 2017-3-22 17:55 | 显示全部楼层    本楼为最佳答案   
答案已上传,请下载查看

已修改.rar

25.57 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2017-3-22 19:35 | 显示全部楼层
liyizhe000 发表于 2017-3-22 17:55
答案已上传,请下载查看

还有两点, 一是同一张单据,付款只记一次;二是可否在点击"存入流水单"时,设置一个"提示确认"
回复

使用道具 举报

发表于 2017-3-23 10:35 | 显示全部楼层
229094667 发表于 2017-3-22 19:35
还有两点, 一是同一张单据,付款只记一次;二是可否在点击"存入流水单"时,设置一个"提示确认"

Sub 流水单()
Dim arr, k, i, m, n, t
arr = Sheets("送货单").Range("b2:q17")
m = 3
Do Until Sheets("流水单").Range("a" & m) = ""
m = m + 1
Loop
For i = 4 To UBound(arr)
With Sheets("流水单")
If arr(i, 1) <> "" Then
.Cells(m, 1) = arr(2, 8)
.Cells(m, 2) = arr(2, 11)
.Cells(m, 3) = arr(2, 13)
.Cells(m, 4) = arr(1, 2) '客户
.Cells(m, 5) = arr(2, 2) '手机
.Cells(m, 6) = arr(3, 16) '单号
.Cells(m, 7) = arr(i, 1) '名称
.Cells(m, 8) = arr(i, 5) '单位
.Cells(m, 9) = arr(i, 6) '数量
.Cells(m, 10) = arr(i, 8) '吨数
.Cells(m, 11) = arr(i, 10) '单价
.Cells(m, 12) = arr(i, 12) '金额
.Cells(m, 13) = Sheets("送货单").Cells(19, 3) '备注
.Cells(m, 14) = Sheets("送货单").Cells(20, 4) '收货人
.Cells(m, 15) = Sheets("送货单").Cells(20, 8) '制单
.Cells(m, 16) = Sheets("送货单").Cells(20, 12) '送货人
m = m + 1
End If
End With
Next
k = WorksheetFunction.CountA(Sheets("送货单").Range("B5:B17"))
t = Sheets("流水单").[a65536].End(xlUp).Row
n = WorksheetFunction.CountIf(Sheets("流水单").Range("F3:F" & t), Sheets("送货单").Range("Q4"))
If n = k Then
MsgBox "录入完成!"
Else
Sheets("流水单").Range("a" & t - k + 1 & ":" & "a" & t).EntireRow.ClearContents
MsgBox "已重复录入"
End If
End Sub

回复

使用道具 举报

 楼主| 发表于 2017-3-23 13:00 | 显示全部楼层
liyizhe000 发表于 2017-3-23 10:35
Sub 流水单()
Dim arr, k, i, m, n, t
arr = Sheets("送货单").Range("b2:q17")

.Cells(m, 13) = Sheets("送货单").Cells(19, 3) '备注     一个单叫如何设置只记一次,谢谢
回复

使用道具 举报

发表于 2017-3-23 16:25 | 显示全部楼层
229094667 发表于 2017-3-23 13:00
.Cells(m, 13) = Sheets("送货单").Cells(19, 3) '备注     一个单叫如何设置只记一次,谢谢

不太懂什么意思!
回复

使用道具 举报

 楼主| 发表于 2017-3-23 17:51 | 显示全部楼层
liyizhe000 发表于 2017-3-23 16:25
不太懂什么意思!

意思是同一个单号,备注如果已收两万,每个品种规格对应的备注都显示两万,这样合计收了四万,可是实际只收以两万,如图所示,谢谢
QQ图片20170323174102.png
回复

使用道具 举报

发表于 2017-3-24 10:38 | 显示全部楼层
Sub 流水单()
Dim arr, k, i, m, n, t
Application.DisplayAlerts = False
arr = Sheets("送货单").Range("b2:q17")
m = 3
Do Until Sheets("流水单").Range("a" & m) = ""
m = m + 1
Loop
For i = 4 To UBound(arr)
With Sheets("流水单")
If arr(i, 1) <> "" Then
.Cells(m, 1) = arr(2, 8)
.Cells(m, 2) = arr(2, 11)
.Cells(m, 3) = arr(2, 13)
.Cells(m, 4) = arr(1, 2) '客户
.Cells(m, 5) = arr(2, 2) '手机
.Cells(m, 6) = arr(3, 16) '单号
.Cells(m, 7) = arr(i, 1) '名称
.Cells(m, 8) = arr(i, 5) '单位
.Cells(m, 9) = arr(i, 6) '数量
.Cells(m, 10) = arr(i, 8) '吨数
.Cells(m, 11) = arr(i, 10) '单价
.Cells(m, 12) = arr(i, 12) '金额
.Cells(m, 13) = Sheets("送货单").Cells(19, 3) '备注
.Cells(m, 14) = Sheets("送货单").Cells(20, 4) '收货人
.Cells(m, 15) = Sheets("送货单").Cells(20, 8) '制单
.Cells(m, 16) = Sheets("送货单").Cells(20, 12) '送货人
m = m + 1
End If
End With
Next
k = WorksheetFunction.CountA(Sheets("送货单").Range("B5:B17"))
t = Sheets("流水单").[a65536].End(xlUp).Row
n = WorksheetFunction.CountIf(Sheets("流水单").Range("F3:F" & t), Sheets("送货单").Range("Q4"))
Sheets("流水单").Range("m" & m - k & ":" & "m" & t).Merge
If n = k Then
MsgBox "录入完成!"

Else
Sheets("流水单").Range("a" & t - k + 1 & ":" & "a" & t).EntireRow.ClearContents
MsgBox "已重复录入"
End If
Application.DisplayAlerts = True
End Sub
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-27 01:20 , Processed in 0.330781 second(s), 9 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表