アプリ版:「スタンプのみでお礼する」機能のリリースについて

教えて下さい。現在、商品をデータベースで管理しているのですが、システム変更をしようと思っており、新しいシステムの方式にデータを書き換えなければなりません。
excel情報
A1:商品A B1:10  C1:0
A2:商品A B2:20  C2:50 
A3:商品A B3:50  C3:0
A4:商品A B4:100 C4:38
この内容を文章にすると、商品Aは10個以下は0円、11個~20個までは50円、21個~50個までは0円、51個~100個まで38円となります。
これを下記のようにしたいのです。
A1:商品A B1:1  C1:0
A2:商品A B2:11  C2:50 
A3:商品A B3:21   C3:0
A4:商品A B4:51 C4:38
A5:商品A B5:100 C5:0
先の例とは違い、”迄”の考え方から"から"の考え方に変わっています。
文面にすると内容は同じなのですが、全くexcel情報が変わっています。
この様な複雑な変換を、そもそもexcelで出来る気がしないのですが、可能なのでしょうか?
もし、気になる方が居られましたら、回答をお願い致します。
基本的なVBAの使い方はわかりますが、書き込むレベルではありません。
もしコードを書くことができるのであれば、コピーさせて頂き作業をさせて頂けますでしょうか。
無茶な話かも知れませんが、何卒宜しくお願い致します。

質問者からの補足コメント

  • へこむわー

    誤字がありました。
    B5は101となり、商品Aは101個から0円設定となります。
    また全体量は数万行あり、B列の数量は1~数万の範囲でランダムで記載。
    法則性はなく、文章を読みとり、捉え方は変えてこれを数字に返す みたいな事しか、自分の頭では出てきません。

      補足日時:2021/09/30 15:35
  • スクショ画像の添付が、なぜかアップできずに、実際のデータ値だけを記載しました。
    今回の質問に関連の無い、得意先コード、名称、商品コードなどは省いております。
    シート名は変更できますので指定しません。

    A     B   C
    商品A    359   0
    商品A   3240   34
    商品B     47   0
    商品B   2940  65
    商品B   4980  63
    商品B   9960  61
    商品B   19980  60
    商品C   2499   0
    商品C   2999  63
    商品C   9960  61
    商品D   1999  0
    商品D   2999  33
    商品D   9840  31

    大変見にくくてすみません。

      補足日時:2021/10/01 18:55

A 回答 (23件中1~10件)

整理しましょう。


提示された内容ではB列で10を1、20を11~~
これでいいのでしょうか?
 
早い話が関数云々ではなく置換でB列を選択しておいて、この場合は多分大きい方の数字から置換えを実施すればいいでしょう。
提示されただけでなく、もっと多くても、この置換で出来るように思います。
 
B列を選択という事は、置換の対象をB列だけにすると言う事です。
また大きい方からと言うのは、置き換えた後の数字が再度置換の対象になってしまう事を防ぐためです。(重ならないのであれば大丈夫です)
 
一応ファイルの元ではなく、コピーしたファイルで確かめてからの方がいいです。
 
https://dekiru.net/article/12053/
    • good
    • 1
この回答へのお礼

ご協力ありがとうございます。
B列を確認しながら、置換えで可能なのですが、これが永遠と数万行あり、且つB列の数字がランダムな為、一度理解をしないと置き換える数字が見てないのが難点です。
やはり、この様な事は不可能なのでしょうか・・・

お礼日時:2021/09/30 15:39

>51個~100個まで38円となります。



>A5:商品A B5:100 C5:0
これはどう区別するべきなのか・・・
B5って101なのかな?
    • good
    • 1
この回答へのお礼

大変失礼いたしました。
質問しておきながら間違っておりました。
やはりB列を総合的に認識して、何かに置き換える事は不可能ですよね。
ご協力ありがとうございます。

お礼日時:2021/09/30 15:46

No.2です。



データ量が不明ですけど
・他の商品はどうなるのか
・100個超はいらないのか
など気になりますが、変換より新たに作成しても宜しいのでは?
大量って数万~数十万行とかですかね?
    • good
    • 1
この回答へのお礼

はい、おっしゃられている通り、数十万行あります。
情報量が少なくて申し訳ございません。
記載した情報は、1例でありA列の商品が数万件、B列は範囲に応じて行が増え、且つ数字もランダムであり、C列の単価はもちろんバラバラです。
人の力しか出来ないでのでしょうね・・・

お礼日時:2021/09/30 15:49

データベースのマスタを変えたいのか、それを使った実データを変えていきたいのかよくわかりません。



マスタを変えたいなら(B1は手入力で変更)、B2以下は1を足せばいいだけですよね?形式を選択して貼り付けの加算を使えばすぐできると思います。

実データを変えたいなら上記で変換したマスタを使ってVLOOKUPとかでできるんじゃないですか?
    • good
    • 1
この回答へのお礼

本当ですね。
まず、使用しているデータベースはシステムソフトなので修正が効きません。
CSVで出力したものをExcelで修正し、新しいシステムソフトにインポートします。
よって実データを修正します。
確かに、20とか50とかの数字はランダムですが、上の行のセルを参照したものに対し+1になっていますね。
少しヒントが見えてきたかもしれません。
ご協力ありがとうございます。

お礼日時:2021/09/30 16:35

> 法則性はなく


この時点で無理です。
 
Excelは魔法は使えません。
規則性があって、それを数式で解決するだけのものです。
    • good
    • 1
この回答へのお礼

絶望的な数量に、人をかき集めて取り組んでいるのですが、さすがに効率が悪く、excelにはいつもながら驚かされ続けてましたので、何かヒントになる物は無いかと探していたのです。
ピボットや関数、VBAを複数使って少しでも進めばと思いました。
こんな、無茶な質問にご協力ありがとうございました。

お礼日時:2021/09/30 16:39

規則性はないと言うのは商品によってB列の個々の最小値(開始値)がバラバラと言う事でしょうか?


それともB・C列の関係性がバラバラなのでしょうか?
或いはB列の範囲が商品Aなら51~100個だけど、商品Bは31~80個、商品Cは61~110個と言う感じ?
    • good
    • 1
この回答へのお礼

その通りです。
B列は数量、C列は商品別数量単価ですので、BとCの組み合わせは無限にあります。
商品Aは10個まで0円なので販売不可ですが、商品Bは1個から120円とか、商品Cは100まで0円で101個から15円とか、本当にバラバラです。
正確には元データの最小値が0円設定なら(商品Aなら10個)は販売不可なのですが、こんなにややこしい質問なので、この際は無視して貰って、最小値は1個からを考えています。

お礼日時:2021/09/30 17:09

置換するテーブルを作って、VLOOKUP関数を使って置き換える…かな。



  D    E    F
  0   10   0
  11   20   50
  21   50   0
  51   100   38
 100   ∞  デカすぎ
の表からVLOOKUP関数で値を拾う。
C1セルなら、
 =VLOOKUP(B1,D1:F5,3,TRUE)
これが仕様変更前のやり方。意味をよく考えてください。
「検索値以下で一番大きい値を検出」して該当する値を拾ってくるようなっています。
じゃあ、どうすれば良いかは分かりますね。
テーブルのD列とE列の値をチョイチョイッと変えるだけです。

なんてことは無い、そんだけの話。
このやり方のもう一つのメリットは、F列も含め簡単に割り当てと返す値を変更できるという事。

・・・

なお、ここで示した数式ではVLOOKUP関数を使っていますので、
検索値がマイナスなどテーブルに存在しない値が指定されている場合のエラーは顧慮していません。
値を入力するのであれば「入力規則」で入力できる値の範囲を指定しておきましょう。
数式で求めるなら数式の中で制御してください。
なお、「入力規則」で制限してもコピー&ペーストすれば指定した範囲以外の値を入れることができたりします。
やはり入力された値を数式で判断するか、エラー処理の数式を織り交ぜましょう。
    • good
    • 1
この回答へのお礼

確かに変換する事が容易に出来ましたが、これをどの様に数十万行に充てれば良いのかが分からなく、思考停止に陥りました(笑
ご協力ありがとうございます!

お礼日時:2021/09/30 19:03

あ、失礼しました。


投稿内容のチェック不足で誤った情報を流してしましたので訂正です。

  D    E    F
  0   10   0
  11   20   50
  21   50   0
  51   100   38
 100   ∞  デカすぎ
 ↑
 101の誤りです。
    • good
    • 1
この回答へのお礼

元は私の間違いですね。
こちらこそ、すみません。

お礼日時:2021/09/30 19:04

商品毎にB列の範囲先頭値もC列の値も変動している数十万行に対し同レベルのテーブルで置換もですが、ほぼ直に修正しても変わらない気がする初級レベルなジジィなのですがやっぱ数式でカバーできるものなのですね。


⇒数式はほぼ皆無に近いので。

と言うよりも実際にエクセルを使っているのか、システムが吐き出したCSVファイルなのかと言う疑問もありますが。
    • good
    • 1
この回答へのお礼

そこなんですね。
思考が停止してしまい、どちらの方が速いのか分からなくなってきて、ひたすら壁を感じ続けています。
システムからデータをCSVでエクスポートし、excelで修正中。
置き換え、検索、関数も使えるので、他の膨大な変換作業に大きく貢献していますが、単価が一番の難関です。

お礼日時:2021/09/30 19:09

「”迄”の考え方から"から"」に変換したいだけの話ではないのでしょうか?



実際のデータがあればVBAで作るんですが・・・。
動きませんでした→実は元データが掲示された仕様ではなかったみたいな
パターンが多くてやる気スイッチが(笑)
    • good
    • 1
この回答へのお礼

やる気スイッチを押して頂けるなら、お願いします(笑)
見ただけで萎える量と数字です( ノД`)シクシク…

お礼日時:2021/09/30 19:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!