Sub NextSeven_CodeFrame()
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Application.Calculation = xlCalculationManual
Application.StatusBar = ">>>>>>>>程序正在运行>>>>>>>>" On Error GoTo ErrHandler Dim StartTime, UsedTime As Variant
StartTime = VBA.Timer
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Dim Wb As Workbook
Dim Sht As Worksheet
Dim oSht As Worksheet
Dim Rng As Range
'Dim Arr As Variant
Dim Arr() Dim EndRow As Long
Const HEAD_ROW As Long = 1
Const SHEET_NAME As String = "原始订单"
Const START_COLUMN As String = "A"
Const END_COLUMN As String = "O"
Dim i As Long, j As Long, k As Long
Dim N As Long
Const OTHER_HEAD_ROW As Long = 1
Const OTHER_SHEET_NAME As String = "整理订单"
Const OTHER_START_COLUMN As String = "A"
Const OTHER_END_COLUMN As String = "O"
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'获取原始记录
Set Wb = Application.ThisWorkbook
Set Sht = Wb.Worksheets(SHEET_NAME)
With Sht
EndRow = .Cells(.Cells.Rows.Count, 1).End(xlUp).Row
Set Rng = .Range(.Cells(HEAD_ROW + 1, START_COLUMN), .Cells(EndRow, END_COLUMN))
'Arr = Rng.Value
ReDim Arr(1 To Rng.Rows.Count, 1 To Rng.Columns.Count)
With Rng
For i = 1 To .Rows.Count
For j = 1 To .Columns.Count
Arr(i, j) = .Cells(i, j).Text
Next j
Next i
End With
End With '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
'生成新记录
Dim brr() As String
ReDim brr(1 To 15, 1 To 1)
N = 0 For i = LBound(Arr) To UBound(Arr)
Key = CStr(Arr(i, 2))
'判断Chr(10)
If InStr(1, Key, Chr(10)) = 0 Then
N = N + 1
ReDim Preserve brr(1 To 15, 1 To N)
For j = 1 To 15
brr(j, N) = Arr(i, j)
Next j
Else
crr = Split(Key, Chr(10))
For k = LBound(crr) To UBound(crr)
N = N + 1
ReDim Preserve brr(1 To 15, 1 To N)
If k = 0 Then
For j = 1 To 15
If j = 2 Then
brr(j, N) = crr(k)
Else
brr(j, N) = Arr(i, j)
End If
Next j
Else
brr(2, N) = crr(k)
brr(14, N) = Arr(i, 14)
brr(15, N) = Arr(i, 15)
End If
Next k
End If Next i For i = LBound(brr, 2) To UBound(brr, 2)
brr(14, i) = Replace(brr(14, i), "深圳号-顺丰国际小包挂号", "USPS")
Next i '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
Set oSht = Wb.Worksheets(OTHER_SHEET_NAME)
With oSht
.UsedRange.Offset(1).ClearComments
.Range("A2").Resize(UBound(brr, 2), UBound(brr)).Value = _
Application.WorksheetFunction.Transpose(brr)
.UsedRange.Columns.AutoFit
End With '>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
UsedTime = VBA.Timer - StartTime
MsgBox "本次耗时:" & Format(UsedTime, "0.000秒"), vbOKOnly, "NextSeven Excel Studio" ErrorExit:
Set Wb = Nothing
Set Sht = Nothing
Set Rng = Nothing
Set oSht = Nothing Application.ScreenUpdating = True
Application.DisplayAlerts = True
Application.Calculation = xlCalculationAutomatic
Application.StatusBar = False
Exit Sub
'>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
ErrHandler:
If Err.Number <> 0 Then
MsgBox Err.Description & "!", vbCritical, "NextSeven Excel Studio "
'Debug.Print Err.Description
Err.Clear
Resume ErrorExit
End If
End Sub

  

20170501xlVBA销售订单整理一行转多行的更多相关文章

  1. 销售订单(SO)-API-给已有的销售订单增加一行

    在已存在的OM订单中增加一物料: PROCEDURE insert_new_so_api(p_return_code OUT VARCHAR2, p_return_msg OUT VARCHAR2) ...

  2. SAP销售订单状态修改(审核) 计划行自动产生需求,产生MD04需求

    不知道业务怎么配置的,创建销售单时,一堆计划行类别,什么CN,DN...都有,但是审核后需要计划行变更为CP,这样在MD04才能看到需求. 原有逻辑是弄个后台程序,审核后调一下,更新一下计划行,这样是 ...

  3. 销售订单行上行号LINE_SHIPMENT_OPTION_NUMBER

     销售订单行上行号:LINE_SHIPMENT_OPTION_NUMBER 取值: ( 1) Line块的块级触发器POST-QUERY调用: OE_LINE.Post_Query;(来自于库OE ...

  4. 如何用代码填充S/4HANA销售订单行项目的数量字段

    我的任务是用代码生成S/4HANA销售订单(Sales Order)的行项目,并且填充对应的quantity(数量)值. 最开始我用了下面的代码,把quantity的值写入item字段target_q ...

  5. 【SD系列】SAP 查看销售订单时,报了一个错误消息,“项目不符合计划行(程序错误)”

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[SD系列]SAP 查看销售订单时,报了一个错误 ...

  6. 【ABAP系列】SAP 销售订单的行项目里条件的增强

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[ABAP系列]SAP 销售订单的行项目里条件的 ...

  7. C4C销售订单行项目价格维护方法

    需求很简单,能够创建销售订单,在行项目里添加产品,带出价格来,同时把总价显示在销售订单抬头区域. 如下图所示: 下面是具体配置. Business Configuration里,点击Sales Ord ...

  8. SAP四代增强实现:销售订单复制项目文本时不需要显示文本框和回车

    最近接收到一个业务需求,在SAP依据销售订单复制时,如果订单里面的项目有多个文本,系统就会显示复制的文本框处理,让用户选择是否复制,这个就让销售很不舒服,如果有几十个项目,每个项目有几个文本,那就就要 ...

  9. [SAP ABAP开发技术总结]SD销售订单定价过程

    声明:原创作品,转载时请注明文章来自SAP师太技术博客( 博/客/园www.cnblogs.com):www.cnblogs.com/jiangzhengjun,并以超链接形式标明文章原始出处,否则将 ...

随机推荐

  1. 错误处理:WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping

    今天在配置用户权限管理的时候,遇到了这么个错误: WebForms UnobtrusiveValidationMode 需要“jquery”ScriptResourceMapping.请添加一个名为 ...

  2. Linux命令:查看文件内容cat|tac|more|less|head|tail|nl|od

    查看文件内容的命令;cat, tac, more, less, head, tail, nl, 1)cat 由第一行开始显示文档内容,一直显示到最后 2)tac 从最后一行开始显示,一直显示到第一行内 ...

  3. za

    http://www.szjs.gov.cn/bsfw/zdyw_1/zfbz/jgcx/

  4. Linux基础命令---chgrp

    chgrp 改变文件或者目录所属的群组,使用参数“--reference”,可以改变文件的群组为指定的关联文件群组. 此命令的适用范围:RedHat.RHEL.Ubuntu.CentOS.SUSE.o ...

  5. 如何用有NFC功能的手机微信给公交卡充值?入口在那里?

    如何用有NFC功能的手机微信给公交卡充值?入口在那里? 需要两个前提: 1.NFC功能手机授权同意微信获取权限. 2.打开微信,并把公交卡放在手机背面贴紧. 选择下方的[充值金额],可以是10元.20 ...

  6. HTML5 manifest离线缓存技术

    干什么用的? 离线缓存为的是第一次请求后,根据manifest文件进行本地缓存,并且在下一次请求后进行展示(若有缓存的话,无需再次进行请求而是直接调用缓存),最根本的感觉是它使得WEB从online可 ...

  7. mysql 从数据库中获取多条记录,二维展示数据

    展示要求: 客户/日期 2017-10-16 1017-10-17 2017-10-18 客户1       客户2       数据库中数据: 解决办法: 1.新建一个实体类:客户名称.客户数据(A ...

  8. Linux中Postfix邮件原理介绍(一)

    邮件相关协议 SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议, 工作在TCP的25端口.它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式 ...

  9. PHP多进程处理并行处理任务实例(转,备用)

    本文目的本文通过例子讲解linux环境下,使用php进行并发任务处理,以及如何通过pipe用于进程间的数据同步.PHP多进程通过pcntl_XXX系列函数使用多进程功能.注意:pcntl_XXX只能运 ...

  10. CentOS7安装redis5.0

    下载好redis5.0后解压在/tmp目录 cd /tmp/redis-/ make make过程中可能出现make[1]: *** [adlist.o] 错误 127,这是因为CentOS7默认没有 ...