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

タイトルだけだと当然伝わらないので説明させて頂きます。

D5セルに、金額(例:10,000円)
D6セルに、還元率(例:50%)
D7セルに、金額×還元率(例:5,000円)
が入っています。
上記のままなら何てことないのですが、
還元率は例えばこんなバリエーションがあります、
 10/10(10割=100%=全額)
 1/2(半分)
 1/3(3分の1)、、、※これだけとは限らないので選択式は不可

何故困っているかというと、
D6セルの還元率には、計算結果の「50%」ではなく、見た目の計算式を表示したいのです。
つまり、
D6に「10/10」と入力すると、そのまま「10/10」と表示し、D7では「=D5*10/10」の結果表示、
「1/3」と入力するとそのまま式が表示されつつ、D7では「=D5*1/3」の結果表示されるようにしたい。
「=1/3」と入れてしまうと「0.333」と表示されてしまうのでNG
文字列として「1/3」が表示されるけどD7では「=D5*1/3」と計算したいのです。
別の作業セルを使用するのではなく、入力者はD6に素直に「1/3」と入力したい。
理想通りにいかないならどこまで妥協すれば実現できるか、、、
アドバイスお願いいたします。

A 回答 (6件)

>帯分数にしてシリアル値化を防ぐ方法


まぁ、ルール、ってか「EXCELの使用上の注意」が
複雑化しすぎてて「人なら普通鋼解釈するだろ」を
理想的に解釈するプログラミングを実現できてない、
ってことでしょうね。

1/3
を「日付と解釈する」ってのも便利っちゃ便利ですが
本件ではむしろ余計なお世話なわけで。

複雑化してるんでしょうがないですね。

検索すれば結構な情報にヒットさせてくれる検索エンジンとか
1度でも触れた事が合って無料で提供してくれる情報提供者さんには
大いに感謝する限りです。
    • good
    • 0

やっぱり、表示と計算を分けた方がいいと思いますよ。


還元率がパターン化されているならそこは文字列で入力。(入力規則のリストなどを使ってみては?)

別で還元率と数値の対応表を作っておき(上記リストもここから参照するとか)、実際の計算は対応する数値を持ってきて計算する、とかで。
    • good
    • 0
この回答へのお礼

ありがとうございます。正攻法としてはそれがベストですね。(イレギュラーにも対応できる)
今回は偶然にも文字列からの計算が出来て、色々勉強になります。

お礼日時:2022/06/23 17:38

No.3です。



肝心な事書き忘れてましたが
質問者さんのご希望は満足できていると思います。

還元率は"1/3" とか "10/10" と入力しそのように表示されます。
(全角文字だとだめかもです)

-------------------
試してみた事追加。

0.9%
とかだと
0.9/100
のように書きたくなりますが
小数はだめみたいです。

9/1000
のようにごまかすしか。
    • good
    • 0
この回答へのお礼

探せば問題はあるものですね。
でも今回のニーズ範囲はカバーされてましたのでノープロブレムでした。

お礼日時:2022/06/23 17:37

詳しくないんですが


ちょっと調べて、試してみました。

"1/3" とか "10/10" を入力するセルの書式は「文字列」なのは変えず、
それを引用して計算するところで
VALUE("0 "&参照セル)
と記述すると分数表現な文字列を数値として解釈し計算してくれます。
""の中身は半角0と半角スペースです。

質問文の例だとセルD7を
=VALUE("0 "&D6)*D5
とします。


調べたてわかった事。
VALUE 関数で"1/3" とか "10/10" を数値変換すると「日付」と解釈され
シリアル値になってしまいますが、
分数を「帯分数」形式にすればこれを防げるのだそうで。
帯分数、とは整数部分を持つ分数です。

つまり
"1/3" なら"0 1/3"
のように入力します。
(これはセルに分数を直接入力する際もこのようになるようです。)
("10/10" などは約分されてしまうのも同様。)

それで、文字列な分数表現"1/3"とかをVALUE関数内で引用する際に
「帯分数」形式に変換(頭に0と半角スペースを足す)したわけです。

試してみた事。
分数の入力部分、数値は何でもOKではないみたいで、
デタラメだとエラーが出ます。
ルールがよくわかりません。32768以上はだめみたい?
それだけなら実用上問題なさそうですが
    • good
    • 2
この回答へのお礼

できました!
文字列を数式に変換して計算させてしまう方法素晴らしいです。
しかも帯分数にしてシリアル値化を防ぐ方法、感心しました!
あり得そうな入力値どれも結果が出て最高です。

お礼日時:2022/06/23 17:36

こんにちは



ご質問の通りにはなりませんけれど・・

D6セルの書式設定を分数にしておけば、ある程度は満たすことができると思います。
ユーザ定義で書式を「??/??」などに設定します。
 1/3を入力 → 1/3
 1/2を入力 → 1/2
 10/10を入力 → 1/1
 2/4を入力 → 1/2
のように、約分できるところはされてしまいますけれど・・
(セル値はそのまま数値として扱うことが可能です)
    • good
    • 1
この回答へのお礼

そんなテク、ありがとうございます。

ちなみに「10/10」って表示されないと駄目みたいです・・・
詳細を確認したらパターンは限られるそうなので、プルダウンメニューにして、
選択によって式を計算できるようにするしかないと思いました。
(「1/3」を選んだら、「=D5*1/3」の結果表示)

お礼日時:2022/06/23 13:00

>別の作業セルを使用するのではなく


つまり、1つのセルに、直接入力と関数(計算式)を
同時に設定したい、ということですね?
それは無理です。

直接入力するセルと、関数を設定するセルを別にする、
作業セルを作って、ステップを分けるしかありません。

>どこまで妥協すれば実現できるか
マクロを組むしかないですね。
該当セルに値が入力されたら、そのセルに計算が働く、
というマクロを組んでおけば、同一セルでの実現は可能です。
    • good
    • 0

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