使用宏格式化工作表上的数据



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

我的AMan程序会生成一个Excel工作簿。然后,我将这些项目复制到我的"宏启用"工作簿上的表1,然后运行我的宏。表二包含标签的正确格式数据。例如;它有一些公式可以将Description字段修改为只使用前60个字符。(有些描述相当长)

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

  1. 将多个数量的项目分开到单独的行(我确实有)
  2. 从SKU(工作宏)中删除前导字母,然后将SKU放入七位数格式(#######)
  3. 将Description减少到前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

结束子

将sku格式化为7位数字格式非常简单。您只需要在End Sub

之前插入这行代码。

Selection.NumberFormat = "0000000"

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

首先,我将使用一些Const语句来注意哪些列是什么,以及它们需要的长度。您可以只使用代码中的数字,但这使得在将来更改时更容易更新。在最后的Dim

下面添加
Const DESCRIPTIONLENGTH = 60
Const DESCRIPTIONCOLUMN = 2

然后循环遍历每一行,然后更新For i =...

下面的单元格- add的值
'Format each column's data
    dat(i, DESCRIPTIONCOLUMN).Value = Left(dat(i, DESCRIPTIONCOLUMN), DESCRIPTIONLENGTH)

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

最新更新