使用macros在表单上格式化数据

我经营一家小型零售店,并负责为我们的物品创build库存标签。 我将库存pipe理软件(AMan Pro)中的物品清单从项目描述,数量,条件,SKU#和平台(video游戏平台)中导出到Excel中。 我目前有两个macros。 一个将修整SKU到一个可用的格式(摆脱前导字母),另一个将多个数量的项目分隔到单独的行。 (即数量为5的项目#1将被复制到数量为1的5行)这些东西的作品,但我想我正在做一些可以用macros处理的不必要的步骤。

我的AMan程序用这些项目吐出一个Excel工作簿。 然后,我将这些项目复制到我的“启用macros”的工作簿上,然后运行我的macros。 第二张表格的标签格式正确。 例如; 它有公式修剪说明字段只使用前60个字符。 (一些描述很长)

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

  1. 将多个数量的项目分隔到不同的行(我确实有一个工作macros)。
  2. 删除SKU(工作macros)的前导字母,然后将SKU以七位数字格式(#######)
  3. 将说明简化为只有前60个字符。
  4. 将条件缩小到只有前2个字符。
  5. 将平台减less到前15个字符。

这是我目前的macros代码和我的电子表格的链接。 在此先感谢,伙计们。 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"

当您parsing数据时,可以调整每个单元格的长度。

首先,我将使用一些Const语句来logging哪些列是什么,以及他们需要的长度。 您可以在代码中使用这些数字,但是如果它们发生更改,将来可以更容易地进行更新。 在最后的Dim下面添加

 Const DESCRIPTIONLENGTH = 60 Const DESCRIPTIONCOLUMN = 2 

然后,当你循环每一行,你会更新单元格的值 – 添加下面的For i =...

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

我希望描述栏的代码可以帮助你build立你需要的其他栏目。