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

MS officeでの関数(text,format)について
やってることが同じでも関数が違うものが結構あります。
例)数値を文字列に変える関数 text /format
文字列を数値に変える関数 val/value/num(これはMSofficeだったかわすれましたが)

VBAかワークシート関数かで使い分けるのは面倒なんですが、それぞれが発生した由来、text関数がVBAで実装されない理由(またその逆でもいいのですが)とかうんちくを聞かせてください。

A 回答 (3件)

>使う側としては、「開発史が、まったく違うものですから」というのは、関係ないですよね?



関係ない?って、私は、「開発史」が違うものは、同じ仕様を持っていないという説明が、お分かりにならないかったのでしょうか?ご質問が「うんちく」というから、もう少し、ゆるい話をお求めのように思いましたが、どうやら、そうではなかったようですね。

VBAとExcelのワークシートの操作は、まったく質の違うものとしか言いようがありません。違うソフトウェアと思ったほうがよいです。もし、VBAを覚えたいなら、一旦、ワークシートのことは忘れて、VBAに集中したほうがよいです。両方を行ったり来たりの掛け持ちでは覚えられません。同じような考えでいたら、うまくいかないのです。

>vbaの場合は、ワークシート関数の場合は、とか考えるのが面倒くさい、といった主旨でした。

Excelなどに興味があれは、いろんな周辺情報も楽しく感じるものですが、「面倒くさい」といわれれば、覚えられるものも、覚えられなくなってしまいます。

それに、いつまでも、VBAが続くとは思わないほうがよいです。いずれは、VBAはなくなると思ったほうがよいです。
    • good
    • 0

こちら側からすると、ご質問の意図が分かりにくいのですが、ワークシート関数とVBA関数との違いについて、ということでしょうか。

しかし、開発史が、まったく違うものですから、それを比較するということは難しいのではないでしょうか?

基本的な関数名自体は、Microsoft社 が考えたものではなく、1970年代後半、VisiCalc の開発者、MIT大学生のダン・ブリックリン氏とその友人が考えたものです。その後、ロータス社に権利を譲り、その時に関数が増えました。Microsoft側は、1980年代の初頭に天才チャールズ・シモニー氏が、その開発に関与したと言われますが、関数名は、すでに、ロータス社の中でほとんど揃っていたと思われます。

Lotus1-2-3との互換性が保たれるようにとはいいますが、その話には疑問があります。Microsoft MS-DOSの表計算 Multiplan は、1983~4年頃で、同様の関数があったからです。MS-DOSと表計算はバンドルしていた時代が初期にはあります。互換性が保たれていたとは言えません。

VBA側は、ご存知だと思いますが、Visual Basic からのダウンサイジングです。1995年にExcel Ver.5からVBが取り入れられたものであったわけで、ワークシート関数と似ているかといっても、比較できるものではないと思います。その開発チームは、まったく別な所にあったものだと思います。Excelに、VBAを取り込むことは賛否両論だったとも言われます。

Val は、VBAの文字から数値に換える関数。Value は、Range 等のオブジェクトのプロパティ。
N やCONCATENATEは、Lotus1-2-3との互換性のための数値化するためのワークシート関数。

Format は、VBAの書式関数、Text はワークシートの関数。しかし、Text 関数は、MS-DOS版表計算のロ社のものにもMS社どちらにもありません。

VBAのMID関数の仕様は、ワークシート関数のREPLACEと同じような機能があったりします。
ROUND関数は、両者ではまったく違うものです。VBAは、偶数丸めという近似値を求めるための関数で、四捨五入をすることではありません。MOD関数は、ワークシート側は、小数が発生しますが、VBAでは、もともと演算子であるし、Long型、Integer型、Byte 型と、各々の小数発生のデータ型の数値を丸めてしまいます。
    • good
    • 0
この回答へのお礼

ありがとうございます。使う側としては、「開発史が、まったく違うものですから」というのは、関係ないですよね?

もう21世紀になって10年にもなるのですから、1995年から全く変化がないというのも。。。
同じことが出来る関数があってもいいんではないかな、と思います。まあ下位互換性を保つためにはしょうがないのでしょうが。

毎日スクリプトを書くわけではない人間からすると、vbaの場合は、ワークシート関数の場合は、とか考えるのが面倒くさい、といった主旨でした。

お礼日時:2010/06/15 19:40

formatやvalは昔からあるように思います。

    • good
    • 0

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