• ベストアンサー

特定のデータ更新

EXCELで作成した価格表について、特定の条件にマッチした商品のみの価格を修正したいと考えております。 具体的には、商品(価格表)の構成要素が色・形状・サイズ・価格となっており、現在やりたい事は、特定の形状とサイズの商品について値段を更新(現在の価格から400円プラス)したいと思っております。VBAで処理したいと思うのですが、どうすれば良いかわかりません。AutoFilterあたりを利用してデータ抽出・修正できそうなイメージなのですが、、、具体的にどうすれば良いかわかりません。 価格を更新する方法をご指導いただきたくよろしくお願い致します。 (ACCESSで言えば価格表の形状・サイズを抽出条件として価格を更新する更新クエリのような処理をEXCELのVBAで行いたいです。)

質問者が選んだベストアンサー

  • ベストアンサー
  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.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 マクロ作動中の画面更新と自動計算を止めればかなり早くなると思います。

omega_01
質問者

お礼

ご回答ありがとうございました。 上記コードを参考にして処理していきたいと思います。

その他の回答 (4)

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.4

>高速な処理 と言う点での参考: VBA高速化テクニック http://www.officetanaka.net/excel/vba/speed/index.htm 特に、11. セルを配列に入れる あたりは早いと思いますよ。

omega_01
質問者

お礼

ご回答ありがとうございました。 ご回答頂いたURLも参考に致します。

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.3

#2です。 失礼しました。誤記しました。 誤 サイズが△で、サイズが20のものだけ 正 形状が△で、サイズが20のものだけ

  • merlionXX
  • ベストアンサー率48% (1930/4007)
回答No.2

> 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

omega_01
質問者

補足

ご回答ありがとうございます。説明が不足しており申し訳ありませんが、データ数が現状で7万近くあり(シートも複数)高速な処理ができないかと思っていたのですが、、、確かにこの手法が確実かもしれません。この手法を参考に一度マクロを組んでみようと思います。

  • n-jun
  • ベストアンサー率33% (959/2873)
回答No.1

>特定の形状とサイズの商品 にマッチしたデータ(に対する値段)を >現在の価格から400円プラス すればいいのでは? (それ以上はシート構成が不明なので回答もつきにくいかと) >AutoFilterあたりを利用して 先頭行から見ていけば、必要ない。かも?

関連するQ&A

  • 特定の桁数を抽出

    教えてください。 エクセルのVBAで、 特定の桁数を抽出するにはどうすれば、よいでしょうか。 イメージは、添付ファイルのC列のようなVBAを作りたい、 と考えています。 条件としては、 (1)先頭~10桁までを抽出 (2)それ以降は削除 (3)文字列にする、 です。 使用ソフトは、EXCEL2010です。 よろしくお願いします。

  • 特定の列の抽出

    CSVファイルがあり特定の列を抽出したいんですが、excelが入ってなくマクロ(VB)が使用できない為、そのような処理をバッチで処理することは可能でしょうか?教えてください。ちなみに抽出条件は日付です。

  • EXCEL VBAを使用してCSVを自動更新

    こんにちは。 今、EXCELのマクロ(VBA)を使ってネットショップのCSVを自動更新しようと試みているのですが、具体的にいうと価格.comの家電(パソコン・プラズマテレビ)の人気ランク1位~5位までの商品の情報をCSVに落とし込んで、商品コメントと商品画像を同時に取り込みたいという事なのですが、これらのVBAをエクセルで動かしたいのですが、何分VBA初心者なので手詰まりの状態です。 ※CSVの用途は、ネットショップのサイトを更新する情報をCSVにて一括管理しています。通常は、FTPを用いてアップロードして更新しています。 いい記述・もしくは方法はないでしょうか?宜しくお願いします。

  • エクセルで抽出データを削除修正する方法

    エクセルで在庫管理データ(ファイルA)の中からLOOKUPで指定条件に見合うデータのみを抽出し、リンク貼り付けで一覧表(ファイルB)を作成ております。 指定条件データで抽出したデータを修正したり、行毎削除したいと考えております。 何か方法がありますか? 当方初心者なため関数で処理できれば助かります。

  • EXCELのVBA-フィルタ抽出後のセル選択方法

    EXCELのVBAです。  オートフィルタ(Autofilter)で、何らかの条件で抽出をかけた後の部分で、 特定のセル、例えば、2列目の上から5番目のセル、を選択するには、 どうすれば良いでしょう?  言い方を変えれば、可視セルの中だけで、何列目で何行目セルという指定 をするにはどうすれば良いかと。  RangeとかSelectionで、指定する方法が有るのでしょうか? よろしくお願いいたします。

  • Excel VBAでデータを自動処理したい

    Excelで大量のデータ処理をしなくてはならないのですが、以下の処理をExcel VBAで自動処理できないでしょうか? どなたかお知恵をお貸しください。 (1)A、B、C列からなるリストがあります。A,B列にはそれぞれオートフィルタが設定してあり、C列は空白です。A列、B列にそれぞれ条件を設定し、抽出したデータのC列(空白)に特定のデータを入力します。A列、B列2つの条件の組み合わせが100通りくらいあり、現在手動でオートフィルタを設定し、C列にデータを入力しております。例えばA,B列の条件の組み合わせと、それに対応するC列に入力するデータを表にしたテーブルを別に作り、A,B列の条件を自動に設定して、抽出し、C列にデータを自動に入力することを、テーブルの一番上の行から最後の行まで繰り返す、というようなことをVBAでExcelにしてもらいたいのです。自分でちゃんと勉強し、調べて、それでも分からなかったらお聞きするというのが筋だと思うのですが、今この仕事に追われて、時間がありません。(ほとんど毎日午前様です。)この仕事が片付いたら、じっくりVBAを勉強したいと思っております。どうぞよろしくお願いいたします。

  • エクセルで特定データの抽出をしたい

    元データと抽出データはそれぞれ書式が違い、処理するPCも違います。元データをメールなどに添付し開き、抽出データへコピペすると、抽出データ表で必要なものだけ反映される方法を教えていただけませんか?元データ表は処理の都合上、毎回順不同。抽出データ表は、常に順序固定。また、抽出データ表のB列「勤務」が「退職」の場合、抽出データ表では事前に削除しています。元データにあって、抽出データにない項目(勤務、年齢、開始時間)は不必要。あくまで、抽出データがほしいだけ。条件としては、元データと抽出データの「名前」を参照し、抽出データそれぞれの項目にデータを表示。どちらのデータも、表の増減あり。ありあまりのもデータが膨大な為、抽出データ、元データともに、書式(表組)の変更はできません。何卒、ご伝授願います。追伸:元データの「%」は関数にて計算。

  • エクセルで特定のデータのある行jを抽出するには。

    エクセルで作成された、教員50人分の時間割表があります。 そこから特定の10人の時間割の行(1週間分が書かれている)を抽出するには、どのようにすればよいのでしょうか。

  • データ抽出

    VBA初心者です。 エクセルで2枚のシートを練習用で作成しました。 画像上段がシート1で元データです。 下段が転記先の表で、シート2です。 シート2は、今はデータが参考に貼りつけてありますが 普段はマクロで作業後は消去して、空白にしています。 今したい処理が 元データをINPUTBOX関数を使って抽出し、 NO,購入日付、分類、感想、備考のデータを下段画像シート2のように 転記したいのです。 抽出条件のキーになるのは、主に「購入日付」と「分類」です。 どこかのセルに、日付を範囲指定で入力すれば、条件に当てはまる データをシート2に表示させたいです。 四半期ごとのデータを検索したいためです。 INPUTBOX関数でなくても、どこかの特定のセルに範囲指定する日付を入力 して、抽出してもかまわないです。 あと、分類は割と「飲料水」を抽出して、印刷する頻度が多いのですが 今後の参考に、全部の分類を抽出できるスタイルが望ましいです。 現在は、一行一行日付と分類を目視で確認しながら シート2にコピペ作業しているので 時間がかかります。 エクセルの機能でフィルタ等をしてみたのですが、 関数やVBAで素早くしたいのですが、なかなかコードが思いつきません。 お願いします。

  • ACCESSでデータ変更箇所が分かるようにする方法

    ACCESS初心者です。 顧客住所録管理をしていて、フォームで既存レコードのどこかのフィールドを変更したら、”変更日時”のフィールドに日時が入るように指定しました。 (全てのフィールドのプロパティ更新後処理に           Me![更新日時].Value = Now()     と設定。) 変更日時で抽出をかければ特定の日以後に変更のあったデータを抽出してくれるの ですが、どのフィールドが変更になったかは分かりません。 そこで、変更があったフィールドに色をつけるということはできないものかと考えました。 フォームの条件付書式で条件が真のときに色を塗るっていうのがありましたよね。 あんな感じのことがしたいのですが・・・。 各フィールドの更新後処理になにかVBAを付け加えればいいのでしょうか? 初心者なもので質問が的を得ていないのかもしれませんが、どなたかご教授頂ける方、よろしくお願いします。

専門家に質問してみよう