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

表Aには、A列に0から15までの数値が(小数点以下第2位までを含む)12行入っており、B列にはその数値に合致する主な性質が入っています。
例)
A1:0.5 B1:粘性土
A2:1.4 B2:砂質土
A3:4.3 B3:砂質土
A4:6.1 B4:粘性土…

表Bには、D列に0~1、1~2…14~15と、入力されています。

表BのE列に、D列の範囲に最も近い表AのB列の要素を入れたいのですが、どのような構文が考えられるでしょうか?

初心者であるため、難しいことがさっぱりわかりません。
お聞きするのも憚られるのですが、仕事上、クリアしなければならず、お助けいただけると大変助かります。
よろしくご指導ください。

A 回答 (2件)

添付の図のように表を作りたいということでしょうか。

(黄色の部分)
データ量が多くないなら、No1のかたが指摘されるように手作業で埋めた方が良いかと。
A表のデータ量、B表のデータ量はどの程度あるのでしょうか。10行程度ならマクロにする必要もないかと思います。

VBAということなので、マクロでの実行を望んでいるようですが、その場合にも以下の問題があります。
1)表BのD列に1~2のように、記入されていた場合、人間は下限=1、上限=2と判断できますが、
マクロでは簡単にはできません。よって、下限の列と上限の列を設けることをすすめます。
2)「D列の範囲に最も近い表AのB列の要素」ですが、
1~2の時に、最も近いのはどの値なのかの定義があいまいです。
①1.0,2.0,0.5が考えられますがどれなのでしょうか。
つまり、下限にも最も近いもの、上下限の平均に最も近いもの、上限に最も近いもの等が考えられますが、
定義を明確にする必要があります。
②また、上下限の平均に最も近いものを採用する場合、0.5が最も近いですが、0.5がない場合、
0.2と0.8があったとき、どちらを採用するかが判りません。
③例として14~15の時、この値の範囲内にはいるデータがなかった時、そこは空欄にするのか、
範囲外でも、もっとも近いものを選択して採用するのかが不明です。
「Excel VBA 初心者です 近似値を」の回答画像2
    • good
    • 0
この回答へのお礼

tatsu99さん
ありがとうございます。
ご指摘の通り、もっと精緻に記載すべきでした。
不明瞭な質問をしてしまい、申し訳ありませんでした。

お礼日時:2017/10/02 09:20

こんにちは



「表から近似値を求める」という場合によく用いられるのはLookup系の関数などですが、ご質問文を見る限りはそういう問題ではないように感じられます。

「何のために何をどうするのか」をきちんと把握した上で、「どのように処理するのが適切か」を決めないと、ただ単に「数字があるから、それをいじれば答えがでるでしょ」というものとも思えません。

粘性土、砂質土などの文言から粒径と土質かとも思いましたが、全然違うみたいですし、そもそも、ご提示のA表は何を意味しているものかもわかりません。
http://matsumotoboring.co.jp/boring
また、B表のD列にある数値とA表のA列の数値は同じ種類のものなのでしょうか?(違うような気がしますが…)

さらには、なさりたい作業がいったいどのような意味を持っているのかによっても、扱い方は変わる可能性があります。
例えば、A表は現在世の中にあるスタンダードで、それを使いやすくしようとしてB表を作成するというような場合、新しいスタンダードを作成する作業となりますので、学術的にもそれなりの検討が必要となるでしょう。
とは言っても、A表のA列の値も一見したところ不連続なので、なんだかよくわからないですね。
しかも、数値だからと言って、その値を連続的に扱ってよいものなのかどうかも不明です。(意味しているところがわからないので)

一方で、誰もB表なんて見ないのだけれど、体裁上何かが埋まっていないとならないという程度のものであるなら、VBAなど使わずとも、質問者様が「えいやっ!」っと適当に埋めてもよろしいのではないでしょうか。


ご質問の作業の目的を熟知なさっている方がいらっしゃるならば、その方に処理方法についても仰ぐのが筋だと思います。
    • good
    • 0
この回答へのお礼

fujillinさん
ありがとうございます。
大変不明瞭な質問をしてしまい、申し訳ありませんでした。

お礼日時:2017/10/02 09:20

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

このQ&Aを見た人はこんなQ&Aも見ています