- ベストアンサー
特定のデータ更新
EXCELで作成した価格表について、特定の条件にマッチした商品のみの価格を修正したいと考えております。 具体的には、商品(価格表)の構成要素が色・形状・サイズ・価格となっており、現在やりたい事は、特定の形状とサイズの商品について値段を更新(現在の価格から400円プラス)したいと思っております。VBAで処理したいと思うのですが、どうすれば良いかわかりません。AutoFilterあたりを利用してデータ抽出・修正できそうなイメージなのですが、、、具体的にどうすれば良いかわかりません。 価格を更新する方法をご指導いただきたくよろしくお願い致します。 (ACCESSで言えば価格表の形状・サイズを抽出条件として価格を更新する更新クエリのような処理をEXCELのVBAで行いたいです。)
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
> 高速な処理ができないかと #2のmerlionXXです。 Sub test02() t = Time With Application .ScreenUpdating = False .Calculation = xlCalculationManual End With With ActiveSheet For i = 1 To 60000 If .Cells(i, "B") = "△" And .Cells(i, "C") = 20 Then '条件があてはまれば .Cells(i, "D") = .Cells(i, "D") + 400 '400加算 End If Next i '繰り返し End With With Application .ScreenUpdating = True .Calculation = xlCalculationAutomatic End With MsgBox "所要時間 " & Format((Time - t), "hh:mm:ss") End Sub マクロ作動中の画面更新と自動計算を止めればかなり早くなると思います。
その他の回答 (4)
- n-jun
- ベストアンサー率33% (959/2873)
>高速な処理 と言う点での参考: VBA高速化テクニック http://www.officetanaka.net/excel/vba/speed/index.htm 特に、11. セルを配列に入れる あたりは早いと思いますよ。
お礼
ご回答ありがとうございました。 ご回答頂いたURLも参考に致します。
- merlionXX
- ベストアンサー率48% (1930/4007)
#2です。 失礼しました。誤記しました。 誤 サイズが△で、サイズが20のものだけ 正 形状が△で、サイズが20のものだけ
- merlionXX
- ベストアンサー率48% (1930/4007)
> VBAで処理したいと思う VBAがある程度おわかりになるようですので簡単なサンプルです。 形状がB列、サイズがC列、価格がD列にあるとして、100行目までのデータを対象に、サイズが△で、サイズが20のものだけ、価格に400を加算するマクロです。 Sub test01() With ActiveSheet For i = 1 To 100 '1から100まで If .Cells(i, "B") = "△" And .Cells(i, "C") = 20 Then '条件があてはまれば .Cells(i, "D") = .Cells(i, "D") + 400 '400加算 End If Next i '繰り返し End With End Sub
補足
ご回答ありがとうございます。説明が不足しており申し訳ありませんが、データ数が現状で7万近くあり(シートも複数)高速な処理ができないかと思っていたのですが、、、確かにこの手法が確実かもしれません。この手法を参考に一度マクロを組んでみようと思います。
- n-jun
- ベストアンサー率33% (959/2873)
>特定の形状とサイズの商品 にマッチしたデータ(に対する値段)を >現在の価格から400円プラス すればいいのでは? (それ以上はシート構成が不明なので回答もつきにくいかと) >AutoFilterあたりを利用して 先頭行から見ていけば、必要ない。かも?
お礼
ご回答ありがとうございました。 上記コードを参考にして処理していきたいと思います。