ここから本文です

エクセルマクロにてご質問です! 品番集計リストを作成しているのですがうまく...

smi********さん

2018/9/1417:11:04

エクセルマクロにてご質問です!

品番集計リストを作成しているのですがうまくいきません。
Sheet1A列にてA2より品番(10ケタ以上)を入力し、その後必要数を入力します。

必要数はバーコードにて入力する為1ケタから4ケタまで数回入力します。
その後舞う櫓を実行し別シート(SHEET2)へA列に品番、B列に合計数量を
表示させたいです。
品番は頭に0が数個付くので入力は文字列になります。
Sheet2へは毎回消さずそのまま最終行から連続で入れます。

自分が書いたものはうまく動きませんでした。下記になります。


Sub テスト ()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

Dim rng As Range, i As Variant, r As Range

Set rng = Range("A1", Cells(Rows.Count, "A").End(xlUp))

With Sheets("Sheet2")

i = 2

For Each r In rng.SpecialCells(xlCellTypeConstants, 1).Areas
.Cells(i, "A") = r(0)
.Cells(i, "B") = Application.Sum(r)

i = i + 1
Next

End With

End Sub

ご教授をお願い致します。

閲覧数:
129
回答数:
1
お礼:
100枚

違反報告

ベストアンサーに選ばれた回答

ask********さん

2018/9/1609:28:48

こんなやり方はどうでしょう?

●品番は10桁以上
●合計する値の桁数は10桁未満
この条件が成立するのでしたら、A列の文字数で品番判定できませんか?

未使用列に、次式をセット
=IF(LEN(A2)>=10,"",VALUE(A2))

数値を返したセル範囲ごとに処理をする

---------------------
0から始まる品番について

00009157286

="00009157286"

このような数式にすれば、品番をそのまま表示できます。

----------------
Option Explicit
Sub テスト3()
Dim LR As Long
Dim Sh As String
Dim k As Long
Dim V As Variant
Dim Rng As Range, R As Range

'===========
Sh = CStr("103") '←転記先シート名
'===========

With Worksheets("sheet1")
LR = .Cells(Rows.Count, 1).End(xlUp).Row

With .Range("a2", .Cells(LR, 1)).Offset(, Columns.Count - 1)
.Formula = "=IF(LEN(A2)>=10,"""",VALUE(A2))"
'右端列に数式を入れる

Set Rng = .SpecialCells(xlCellTypeFormulas, xlNumbers)
'数値を返したセルを、Rng に代入する
End With

ReDim V(1 To Rng.Areas.Count, 1 To 2)
k = 1

For Each R In Rng.Areas
V(k, 1) = "=""" & CStr(.Cells(R.Row - 1, 1).Text) & """"
' 品番
V(k, 2) = Application.Sum(R)
' 合計値

k = k + 1
Next R
End With

Rng.EntireColumn.Clear

With Worksheets(Sh).Columns("a:b")
.Clear
.Rows(1).Resize(UBound(V)).Value = V
'品番と合計値を入れる
.AutoFit
End With
End Sub

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる