• ベストアンサー

ロータス機能のエクセルでの実現について

imogasiの回答

  • imogasi
  • ベストアンサー率27% (4737/17068)
回答No.1

下記表現個所に当たる関数式の実例1,2で挙げていただけませんでしょうか。やり方を教えてくれる方が出るかもしれないと思います。 (1)条件式がデータ個別に変更可能    セル内容のリテラルで書きこめるって事ですか。 (2)1セル1行の関数で計算できたのに、エクセルでは別に1セルを年齢計算結果として使用せざるを得ず (3)DSUM関数の条件式にDGET関数とDATEDIFF関数を組み込む ●一般的には下記が出来るので大きな差はないはず。(私見では123が先生格で、エクセルも追いついている部分が関数の 数などに見えると思いますが、)下記では対処できないケース なんでしょうか。   ・関数式のネストが可能。   ・通常は数値文字列を入れるところへ関数式を入れられる   「ケースがある」。   ・一般的には数値やA1表現A1:A10表現や範囲名   、セル名表現が可能です。   ・先ほど解答した別件質問のINDIRECTのように    間接的に出来るが故のメリットもあります。範囲などを    むしろ間接表現をもっと認めて欲しいぐらいです。

wedge
質問者

補足

 説明不足でもうしわけありません。  エクセルのDSUM関数は、Criteriaにセル範囲を指定しなければなりません。  この条件は、外部表現形式が文字列式であれば、内部保持形式がどのようなものてあっても条件として認識します(数値でもtext関数などで文字に変換し、+"<"などを付加する文字列式化しても、表現形式が文字列式であれば条件認知が可能)ですから、条件式を変化させることはできますが、データごとに条件式を変更することができません。データベース関数と条件は1:1でしかありません。  たとえば、DSUMがデータベーステーブルをサーチしている場合に、今まさにサーチしているデータを元に計算された結果を条件式とすることは、セル範囲を条件としている以上、できないと考えます。  たとえば、生年月日データがある場合に、その生年月日から計算された年齢により、条件式を変化させるなどは、データの数だけ条件セルを設けるか、別途1列を設けて、年齢計算結果を収納することになります。  条件セルに「<15」15歳以下とした場合に、別にセルを設けないとした場合、比較対照先の年齢はどこで計算するのでしょうか。(別途1列を設けて、年齢計算結果を収納していれば、単にそれとの比較ですみますが・・・)  一方、123では、DSUMの条件式にデータベース関数を組み込むことができ、データごとに条件式を変化させることができます。DSUM条件は、関数内に直接記述しますから、このような問題が発生しないこととなります。  たとえば、現1サーチデータについて、年齢計算し、それを条件比較対照とすることができます。DSUM(,,DATEDIFF(DGET()))  このように、条件比較対照を、セル列の増加なくデータごとに計算式化できないかということです。  

関連するQ&A

  • エクセル関数でデーターベースから値を抽出するには・・・

     エクセル関数のDGETはデータベースから1つの値を抽出しますよね。でも条件を満たす値が複数ある時には「#NUM」が返されて抽出出来ない。条件を満たす値を複数返すような関数は無いのでしょうか ?   住所、氏名、年齢、職業、のデータの中で「"東京*"」にすむ人の名前を抽出しなさい。「"東京*"」に住んでいる人がいない場合は空白セルを返すようにする、と言った内容です。   どなたか教えて下さい。

  • エクセル「DGET」関数の範囲について

    お世話になります。 DGET関数に関して質問です。 =DGET (データベースの範囲,条件を満たすフィールド,検索条件) に対して、「データベースの範囲」に対してタイトル(AA~CC)をつけていますが、 データベース上に同じ名前があると、2件目以降のAA~CCの項目にあるデータは 条件で見つけてくれないようでした。(以下の条件だとヒットしない) ●条件 AA       BB    CC 2012/2/10 山田 \24,000 ●データベースの範囲 AA       BB    CC    AA       BB CC 2012/2/10 田中 \12,000                   2012/2/10 山田 \24,000 データベースをすべて縦書きにして同じ項目をなくせばもちろんヒットするのですが、 現金と通帳のデータ両方をデータベースの範囲として見て欲しいので、レイアウトを 横並びにしたいのですが、なにか方法はありますでしょうか? 別の関数でも構いませんのでよろしくお願いします。 やりたいのは、横並びにした両方のデータを参照して、 一致したものは入金が終わっているとしたのですが、その関係で同じタイトルにしてます。

  • EXCEL で検索、更新したい

    EXCEL でわからない箇所があり質問します。 前提条件 Sheet1 A列:名前 B列:年月 C列:値 データは、名前と年月で一意になるデータシートがあり マスターデータとして全データが登録されている Sheet2 A列:名前 B列:年月 C列:値 ある条件でとあるデータベースから抽出した名前と年月の一覧がある この段階で値のセルには何も入っていない やりたい事 (1)この状態でマクロを実行し、A列、B列を条件に該当する行から    C列を抽出しSheet2 にセット (2)Sheet2のC列の値を変更後、マクロの実行で    A列、B列の条件を元該当する行から、Sheet1の C列に値を更新 (3)もし、Sheet2のA列、B列の条件に該当しない行がある場合、    Sheet1に行追加しC列を格納 という事をしたいと考えています。 Sheet1 の全ての行をマクロでループさせて A列、B列をif分で比較し行を取得し、Sheet2 に張る場合、 遅くなるのであまりやりたくないと思っています Find 関数も考えたのですが、ヘルプを見る限り、条件が1つしか指定でき ないように思えるのですが、複数列の条件を指定できる Find 関数 あるいは、類似の関数とあかがあるのなら教えてください 最悪は、EXCEL ADO で、自分自身をSQLで抽出、Update、Insert を行う 事も考えていますが、 EXCELのセル内の式で、INDEX関数やDGET関数で簡単に抽出できるのに (ただ、値を変更するので式はかけないけど・・・) わざわざ、ADOでプログラムを組むのもどうなんだろうと疑問に思ってます。

  • Excel VBA でデータベース操作のできる関数

    データベースを扱えるソフトを作ろうと思ったら、通常 Access を使うことになると思うのですが、Excel で作ろうと思っています。 なぜかというと、Office Personal版を持ってる人にも使って欲しいからです。 Excel の1シートをひとつのテーブルに見立てて、簡単なデータベース操作をしたいのですが、それが簡単に行える関数はありますか? VBA の関数でも知りたいのですが、SQL文などで扱えるようになってるのがあればなおさらいいのです。

  • 関数で抽出したセルの一部の文字を変更したい

    DGET関数を使って、別シートよりデータをひっぱってくるように設定しています。 元の値はセルに入っている文字の一部のみ文字の色を変更、太字、下線をひくようにしていますが、 関数ではその文字の条件まで抽出する方法が見当たりません。 DGET関数によって抽出したデータにおいて、「あいうえおかきくけこ」のうち「あ」だけ文字色を赤色、太字、下線をひくようにしたいです どなたか詳しい方やり方を教えてください。 宜しくお願いします。

  • エクセル、計算式で日付が41330となるのを西暦に

    エクセル2010です。 画像のようなデータがあったとして、 たとえば、「2月のUFJの金額の合計をする」といった計算式を、別のセルに記入したいと思っています。 そこで作業列を作り、ワイルドカードを使った文字列をヒットさせるようにしました。 画像のE列に「=A○&B○」という式の作業列を作り、結果を記載したい目的のセルには、 =SUMIF(E16:E27,"2013年2月*UFJ",D16:D27) としてみました。 しかし、ヒットさせたい"2013年2月"の部分が、標準形式の41330のような表示になってしまい、ヒットしません。 SUMIF式のほうを標準形式にしてみようと思いましたが、どの桁が何月と決まっているわけではないので、ワイルドカードを使って指定できません。 こういう場合、E列を「2013年2月25日UFJ」のように表示させるのは、どうすればよいのでしょうか? アドバイスをいただけると幸いです。よろしくお願いします。 ------------------------------------ ちなみに、SUMIFS関数やSUMPRODUCT関数で実現はできたのですが、データが多くなってくると処理がとても重くなってきます。 またピボットテーブルも考えたのですが、この結果を各種条件で表示させるセルをまず設定してから、そのセルを別の様々な計算式が参照するような連動をするかたちになるので、ユーザーの手で条件を変更するピボットテーブルでは対応できないのでは、とのことから、この方法を試しているところです。

  • エクセル自作関数の再計算

    エクセルでVBAを利用して自作関数を作りました。 この関数はシートの値の内容によって異なる結果を返す内容になっています。 で、この関数をセルから呼び出しているのですが、シートの値を変更した時に、もともと用意されている関数なら自動的に再計算されますが、自作関数は再計算されませんでした。 仕方がないので、再計算させたいときには関数を使用しているセルを編集状態にして何も編集せずにenterを押し再計算させています。 これを何かの機能で再計算させる方法を教えてください。よろしくお願いします。

  • 正規表現 使う機会が多いのでしょうか?

    正規表現とはデータベースを操作するにおいて 使う機会が多いのでしょうか? 私はエクセルVBAを勉強しているものですが 正規表現の知識は必要ですか? エクセルでも正規表現を使う機会は多いですか? (エクセルではVBAや関数が不要な単機能なデータしか扱いません)

  • エクセル 複数条件の検索でデータを抜き出す方法

    win7、エクセル2007で作成中のデータベースで、複数の複数の条件に合ったデータ(レコードではなく1セル)を抜き出したいと思っています。 フィールド名は、時間帯、名前、教科、所属などです。 今作っている式は、 =IF(SUMPRODUCT((INDIRECT("'[時間割.xlsx]"&C$2&"'!$b$5:$b$150")=$B5)*(INDIRECT("'[時間割.xlsx]"&C$2&"'!$G$5:$u$150")=$M$28))=1,"〇","") 名前と時間帯が式の検索条件に入っています。 参照先が別ファイルの為、INDIRECTを使っています。 これで条件に合ったデータがあった場合に「〇」が表示されるようにまではできたのですが、さらに、条件に合ったデータの教科を表示するようにしたいと思っています。 ちなみに、人の時間割の為、条件に合うデータは1件しかないです。 DGETなどを使ってみつつ1日中考えていたのですが、訳がわからなくなってきました。。。 もし詳しい方おられましたら、教えて頂けないでしょうか?? すみませんがよろしくお願いします!!

  • エクセルにで、Criteria(条件表)でセル参照は使えますか?

    エクセル2002を使用しております。 DSUM関数を用いていろいろやってみてはいるのですが、できないので助けてください!! <目的> データベースの「日付」フィールドに入力された値が、A1~A2の日付であるレコードの「項目A」に入力された値(数値)を合計しようとしています。(A1とA2はデータベース外にある入力用のセルです) <私が選んだ方法←できません(泣)> DSUM関数を用い、引数Criteria(条件表)のセルに、(1)A1に入力された日付以上(2)A2に入力された日付以下となるように論理式を立てたいのです。『>=A1』としてみましたが、計算されません。 条件式の立て方をアドバイスください。 また、他に良い方法がございましたら、教えていただきたいです! よろしくお願いいたします。