1

私は小さな小売店を経営しており、商品の在庫ラベルの作成を任されています。在庫管理ソフトウェア (AMan Pro) からアイテムのリストを Excel にエクスポートし、アイテムの説明、数量、状態、SKU 番号、およびプラットフォーム (ビデオ ゲーム プラットフォーム) を取得します。私は現在2つのマクロを持っています。1 つは SKU を使用可能な形式にトリミングし (先頭の文字を取り除きます)、もう 1 つは複数の数量アイテムを別の行に分割します。(つまり、数量 5 のアイテム #1 は数量 1 の 5 つの行にコピーされます) これは機能しますが、マクロで処理できる不要な手順を実行していると思います。

私の AMan プログラムは、項目を含む Excel ワークブックを吐き出します。次に、それらの項目をシート 1 の「マクロ有効」ワークブックにコピーして、マクロを実行します。シート 2 には、ラベル用に適切にフォーマットされたデータがあります。例えば; 最初の 60 文字のみを使用するように [説明] フィールドをトリミングする式があります。(一部、かなり長い説明があります)

セカンドシートはあまり必要ない気がします。アイテムをシート 1 にコピーし、シート 1 ですべての書式設定を行うマクロを実行したいと思います。

  1. 複数の数量を持つアイテムを別々の行に分けます (これには動作するマクロがあります)。
  2. SKU (作業マクロ) から先頭の文字を削除し、SKU を 7 桁の数字形式 (#######) にします。
  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

サブ終了

4

1 に答える 1

0

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)

説明列のコードが、他の列にも必要なものを構築するのに役立つことを願っています。

于 2013-01-09T01:05:17.227 に答える