【问题标题】:Using a Macro to format data on sheet使用宏格式化工作表上的数据
【发布时间】:2012-12-22 18:20:12
【问题描述】:

我经营一家小型零售店,我的任务是为我们的商品创建库存标签。我将库存管理软件 (AMan Pro) 中的项目列表导出到 Excel 中,其中包含项目的描述、数量、条件、SKU# 和平台(视频游戏平台)。我目前有两个宏。一个将 SKU 修剪为可用的格式(去掉前导字母),另一个将多个数量的项目分开到单独的行中。 (即数量为 5 的项目 #1 将被复制到数量为 1 的 5 行)这东西有效,但我认为我正在做一些可以用宏处理的不必要的步骤。

我的 AMan 程序会生成一个包含项目的 Excel 工作簿。然后我将这些项目复制到第一页上的“启用宏”工作簿中,然后运行我的宏。表二具有正确格式的标签数据。例如;它具有将描述字段修剪为仅使用前 60 个字符的公式。 (有些描述很长)

我觉得第二张纸真的没有必要。我想将这些项目复制到工作表 1 中并运行一个宏,该宏为我工作表 1 上执行所有这些格式设置。

  1. 将具有多个数量的项目分隔到单独的行中(我确实有 一个工作宏。)
  2. 从 SKU(工作宏)中删除前导字母,然后将 SKU 放入七位数字格式 (#######)
  3. 将说明减少到仅前 60 个字符。
  4. 将条件减少到仅前 2 个字符。
  5. 将平台缩减为仅前 15 个字符。

这是我当前的宏代码和我的电子表格的链接。提前谢谢各位。 SKU_LABEL_FINAL.xlsm

Sub ExpandRows()
Dim dat As Variant
Dim i As Long
Dim rw As Range
Dim rng As Range

Set rng = Sheets(1).UsedRange
dat = rng

' Loop thru your data, starting at the last row
For i = UBound(dat, 1) To 2 Step -1
    ' If Quantity > 1
    If dat(i, 2) > 1 Then
        ' Insert rows to make space
        Set rw = rng.Rows(i).EntireRow
        rw.Offset(1, 0).Resize(dat(i, 2) - 1).Insert
        ' copy row data down
        rw.Copy rw.Offset(1, 0).Resize(dat(i, 2) - 1)
        ' set Quantity to 1
        rw.Cells(1, 2).Resize(dat(i, 2), 1) = 1
    End If
Next
Columns("D:D").Select
Selection.Replace What:="AManPro-", Replacement:="", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

结束子

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    将您的 SKU 格式化为 7 位数字格式非常简单。您只需要在End Sub 行之前插入这行代码

    Selection.NumberFormat = "0000000"

    您可以在解析数据时修剪每个单元格的长度。

    首先,我会使用一些Const 语句来说明哪些列是什么,以及它们需要多长。您可以只使用代码中的数字,但是如果它们发生变化,这样可以更容易地在将来更新它们。在最后的Dim下方添加

    Const DESCRIPTIONLENGTH = 60
    Const DESCRIPTIONCOLUMN = 2
    

    然后,当您遍历每一行时,您将更新单元格的值 - 在 For i =... 下方添加

    'Format each column's data
        dat(i, DESCRIPTIONCOLUMN).Value = Left(dat(i, DESCRIPTIONCOLUMN), DESCRIPTIONLENGTH)
    

    我希望描述列的代码也能帮助您构建其他列所需的内容。

    【讨论】:

    • 谢谢您,先生。我认为这正是我所需要的。有了描述代码的那个例子,我绝对可以修复其他的。再次感谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-02
    • 2015-10-29
    • 1970-01-01
    • 2019-08-10
    相关资源
    最近更新 更多