プロが教えるわが家の防犯対策術!

アクセスで中央値の計算方法がありましたらお教えください
エクセルで計算してインポートする方法しか思いつきませんが
65000行以上あると大変手間がかかります

宜しくお願いします

このQ&Aに関連する最新のQ&A

A 回答 (2件)

詳細な内容がわかりませんが、


テーブル1に数値型フィールドのa,b,cがあって
aとbの中間値をcに設定する場合は

更新クエリーでフィールドcのレコードの更新に
([a]+[b])/2
を設定すればよいのではないでしょうか?

プログラムを書くともっと簡単ですけど・・・。
    • good
    • 0

アクセスの関数を見たのですか見つからない為


アクセスでエクセルの関数を使用する方法を書きます

く~逃げだ逃げだ (ーー;)

がんばって下さい。

参考URL:http://support.microsoft.com/intl/japan/personal …
    • good
    • 0

このQ&Aに関連する人気のQ&A

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

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

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q条件つきのMEDIANについて教えてください。

N列がりんごで、かつS列が青森の場合の、V列の中央値を出す方法を教えてください。

Aベストアンサー

多分、配列数式でやることになるが、学校の宿題でここまで出るのかな?
先日も似た質問で条件付きMEDIANを答えたが。
例データ
県品物数
青森りんご2
秋田りんご4
青森なし1
青森りんご1
岩手なし5
青森りんご1
岩手なし2
青森りんご3
青森りんご5
=MEDIAN(IF((A2:A10="青森")*(B2:B10="りんご"),C2:C10,""))
ト入れてSHIFT、CTRL,ENTERを同時に押す(配列数式)。
原理的なことは、「エクセル 配列数式」でGoogle照会のこと。
結果

ーー
1
1
2
3
5
の中央3番目は2です。

QAccessのマクロでモジュールを実行させたい。

Access2002を勉強中の初心者です。

AccessでDB1という名前のデータベースを作成し、その中で、モジュール1というモジュールを作成しました。これを実行するマクロを作成したく、次のようにマクロを作成しました。
マクロのデザイン画面でアクションに「プロージャの実行」を選択、プロージャ名入力覧の右側の...のボタンを押して式ビルダ画面を表示、ここの「関数」フォルダを開いてDB1を選択、表示されたモジュール1を貼り付けてOK。
しかし、このマクロを実行すると、次のエラーとなります。「DB1 指定されたDB1が見つけることができない関数名が含まれています」

根本的に方法が間違っているのでしょうか?
アドバイスをよろしくお願いします。

Aベストアンサー

#1です。

ちょっと時間ができたので、Accessのヘルプで、
 "RunCode/プロシージャの実行" アクション
についてのトピックを見てみました。

結論から言うと、基本的な考え方が間違っているみたいです^^;。

「プロシージャの実行」アクションでは、「Function」プロシージャを指定するようです。
Subプロシージャではエラーになります。


つまりご質問の件では、
「Subプロシージャを呼び出すFnctionプロシージャ」をまず書かなけれえばならない。
そして、マクロのアクションでは、あらためてこのFunctionプロシージャを指定しなければいけません。

Q条件付きのMEDIANとAVERAGEについて。

条件付きのMEDIANとAVERAGEについて、教えてください。

シート2のN列が"成約"だった場合に、シート2のK列の金額の中央値と平均の値を出したいのですが、うまく出せません。

=MEDIAN(IF(シート2!N1:N1000,"成約"),シート2!K1:K1000)
では駄目でしょうか?

Aベストアンサー

平均は、例えば男と女の行が混じっていて、男だけの平均を出す例が有名です。それは
配列数式の話題です。
(SUMPRODUCTの問題でもありますが、それを使うと条件つき合計を条件付き件数で割り算しないとなりません。)
原理解説は
http://pc.nikkeibp.co.jp/pc21/special/hr/hr4.shtml

成約14
商談中10
破局19
成約25
成約18
=AVERAGE(IF(A2:A6="成約",B2:B6,""))
と入れてSHIFT+CTRL+ENTERの3つのキーを同時押し。
結果
19
ーーー
例データ
成約14
商談中10
破局19
成約25
成約18
商談中29
商談中13
成約18
商談中16
成約23
=MEDIAN(IF(A2:A11="成約",B2:B11,""))
と入れてSHIFT+CTRL+ENTERの3つのキーを同時押し。
結果
18

QACCESSで空白のデーターをクエリで判定/識別する方法を教えてくださ

ACCESSで空白のデーターをクエリで判定/識別する方法を教えてください。
EXCELでは空白を""で判定/識別表していますがACCESSではどうなるのでしょうか。

下の例はフィールドに試験番号があればその番号を、空白なら”欠席”と表示しようとしています。
IIf(([試験番号]="空白の場合何を入れる?"),[試験番号],"欠席")

Aベストアンサー

もうひとつの書き方は
式1: IIf([試験番号] Is Not Null,[試験番号],"欠席")
第2、第3引数の、質問の順序にあわせるとこうなる。

Qピボットテーブルで中央値を表示させるためのマクロ修正法

エクセルのピボットテーブルでは中央値が出ないので、マクロ入門書を片手に奮闘しています。
しかし、全くうまくいきません。

.Function = xlAverage となっていたのを
.Function = xlMedian としてみたのですが、中央値とは全く異なる値(たぶん総計)が返されてしまいます。

正しい方法をご存知の方、どうか教えて下さい。宜しくお願い致します。

Aベストアンサー

#1です。
>データ数が膨大なので、手作業でプログラムを作るのは難しそうです
「手作業で」とはどういう意味なんでしょうか。私が前半で例示した
ようにプログラムせよ、なんて言ってません。そうとったのかもしれない。あくまでも判りやすいかなと例示したまでです。
私が、最後の部分に書いた「実際ではCells(1, 5) = WorksheetFunction.Median(Range("b2:b5"))
のRange("b2:b5")などの部分を(商品の変わり目を)プログラムで割り出してこの部分にRange(Cells()、Cells())の()内にセットすればよい」
の意味を理解してもらえなかったようです。
この線でプログラムを組めば、全体で10数行程度でできます。
それを想起してもらえないのなら、コードを上げても、自分のケースに合わせて、修正できないでしょうから無駄かなとも思います。

QACCESS IIF関数 複数条件の設定について

 選択クエリにおいて、あるフィールド「 X」 のレコード数値が
 
  0<[X]<=50   であれば A 
  50<[X]<=100  であれば B 
  100<[X]<=150  であれば C

 と表記させるフィールド「Y」を追加したいと考えています。
 この場合、Yのフィールド設定で指定する数式についてご教授願います。

 一応、
  IIf(0<[X]<=50,"A","") Or IIf(50<[X]<=100,"B","") Or IIf(100<[X]<=150,"C","")

  としましたが、実行すると、Yの列がすべて「-1」と表記されてしまいます。

 何卒よろしくお願いいたします。

Aベストアンサー

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A", [X]<=100, "B", [X]<=150, "C", True, "")


なお、数学あるいは一般生活では確かに「0<[X]<=50」という表記をしますが、
Accessの関数などではこれだと正しい結果が得られません。
正しく認識させるためには、等号・不等号を挟んだ式は、「左辺」と「右辺」の
2つの要素からなる形にする必要があります。
(「0<[X]<=50」は「[X]>0 And [X]>=50」と分割してやる、と)

但し、今回のご質問のような『連続した範囲』であれば、前(左)で既出となる
式の要素で「[X]<=0」が「真(=-1)」とならなかった時点で、「[X]>0」が保証
されますので、上記のように、「[X]>0」を省略して「[X]<=50」だけを条件として
指定すればOk、ということになります。
(「0<[X]<=50」の次が「80<[X]<120」などのように、「50~80」が欠けた
 場合は、省略ができない、と)


【参考】
「0<[X]<=50」は、このままだと「0 < ([X]<=50)」という式と解釈されます。
この場合、「[X]<=50」は、「真(=-1)」か「偽(=0)」か「Null」のいずれかに
なります。
何にせよ、「0<[X]<=50」全体として「正(=-1)」となることがないため、
ご質問の式では、IIF関数は常に第3引数に指定された値「""」を返す
ことになります。

この結果、式全体としては「"" Or "" Or ""」という形となり、「0かNull」
以外なので、「真(=-1)」という値が返された、ということです。

なお、Nullについては、以前、他の方の質問につけた回答も、併せて参考までに:
http://oshiete.goo.ne.jp/qa/4850675.html

a)IIF関数で対応する場合:
 IIF関数の第2引数または第3引数に、IIF関数を入れ子とする必要があります。

式: IIF([X]<=0, "", IIF([X]<=50, "A", IIF([X]<=100, "B", IIF([X]<=150, "C", ""))))


b)別の組込関数を使用する場合:
 IIF関数は二択ですので入れ子にする必要がありますが、Accessのクエリで
 使用できる、似た機能の関数に、Switch関数というものもあります。
 これであれば、入れ子にする必要がなくなります。
 (詳しくは、Accessのヘルプを参照下さい)

式: Switch([X]<=0, "", [X]<=50, "A"...続きを読む

QSELECTした結果に行番号を求めたい

Oracleのrow_numberのような関数はないのでしょうか?

Order By句を指定してSELECTした結果の行番号を求めたいのですが、
なにか良い方法はないのでしょうか。

例えば次の表なテーブルがあった場合、
Code1 Code2 Code3
01  02  02
01  02  01
01  01  02

ORDER BY Code1,Code2,Code3
で行った場合の結果が
No Code1 Code2 Code3
1  01  01  02
2  01  02  01
3  01  02  02

Noを求めたいのですが。

Aベストアンサー

次のSQLを試してみてください。

select
(select count(*)+1 from t1 as x
where x.c1<y.c1
or x.c1=y.c1 and x.c2<y.c2
or x.c1=y.c1 and x.c2=y.c2 and x.c3<y.c3) as no,
c1,c2,c3
from t1 as y
order by no;

Q【Excel VBA】マクロでExcel自体を終了させたい

環境:WindowsXP、Excel2003

マクロでエクセルを終了(ブックを閉じて、アプリケーション自体も終了)させたいのですが、以下のコードではアプリケーションが閉じてくれません。

ThisWorkbook.Close
ExcObj.Quit
Application.Quit

どこか悪いところはありますでしょうか?

よろしくお願いします。

Aベストアンサー

普通に考えれば質問者のコードで上手くいきそうですが
hana-hana3さんの回答にもあるようにThisWorkBook.Closeでコード終了となりますので
Application.QuitをThisWorkBook.Closeの前にもってこないといけません。
Application.Quitはそれがあるプロシージャのコードが全て終わるまで
その実行を保留するちょと特別動作をします。

'-------------------------------------
 Application.Quit
 ThisWorkbook.Close
'-------------------------------------
 
 

Qアクセスで#エラーを表示させない方法は?

アクセス2000を使用しています。フォームにテキストボックスを貼り付けて、計算式を入れています。計算できない数値になると、#エラーと表示されます。目障りなので、#エラー という表示を消したいのですが、どうしたらよろしいでしょうか?宜しくお願い申し上げ候。

Aベストアンサー

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の左端にあるコンボボックスで「式」を選択
5)上記コンボボックスの隣が1つのテキストボックスになるので、そこに以下のような式を入力
 IsError([テキスト0])
 ※上記の式は当該テキストボックスの名前が「テキスト0」の場合です。
6)上記テキストボックスの下、右から2番目に「A」と表示された、文字色を指定するボタンがあるので、
 その左の小さな「▼」をクリックし、当該テキストボックスの背景と同じ色(既定では白のはず)を選択
7)『OK』ボタンをクリックしてダイアログを閉じる

・・・以上です。
これで、『テキスト0』の計算式がエラーになった場合は、文字色が背景と同じ色になるので、「#エラー」と
いう表示はされていないように見える、という状態にすることができると思います。

はじめは「IIF関数とIsError関数を使用して」と考えたものの、IIF関数は引数がエラーになった時点で
エラーが返されてしまう(=元の木阿弥)ので、どうしたものかと思ったのですが・・・
とりあえず、「見た感じ、何も表示されていないように見える」ということで、『条件付書式』での対応と
いうのはいかがでしょうか。

1)当該フォームをデザインビューで開く
2)当該テキストボックスを選択
3)メニューで「書式(O)→条件付き書式(D)」を選択
4)『条件付き書式設定』ダイアログが開くので、『条件1(1)』枠の...続きを読む

QAccessで名前の間のスペースを削除したいのですが

Accessで名前の間のスペースを削除したいのですが

Aベストアンサー

細かい状況が分かりませんがAccessではReplace関数というものが使用できます。
例えば 鈴木 太郎 のようなデータがテーブルの氏名フィールドに入っている場合には、更新クエリーで次のように更新すれば間のスペースを除去できます。
Replace([氏名]," ","")

Replace関数は文字列中のある文字を別の文字に置き換える関数ですが、この例では全角スペースを""(空文字列=文字なし)に置き換えています。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング