アクセス関数で数字列を5桁にする方法

このQ&Aのポイント
  • アクセスのフィールドに関数を埋め込む際、数字列を5桁にする方法についての質問です。
  • 現在の関数に誤りがあるため、うまく実行できていない状況です。
  • 質問者はIIFとformat関数を使用して数字列を処理しようとしていますが、どこに問題があるかわかっていません。正しい方法を教えてほしいとのことです。
回答を見る
  • ベストアンサー

アクセス iff関数、format関数について

いつもお世話になっております。 アクセスのフィールドへ関数を埋め込みたいのですが、 関数に誤りがあるため、うまく実行ができておりません。 今回、実行したいことは、 ※数字列の左端に0を埋め込み、5桁にしたい。 ※数値が負の場合、マイナスを含めて、5桁にしたい ※数字列に入る数値は-1000~1000の予定 ※当方、アクセス2003を利用。 ex) 1 →  00001   -3 →  -0003    0 → 00000   156→ 00156 -1000 → -1000 15000 →15000 当方の作成関数は、以下の通りですが、 どこが悪いのかよくわかりません。。ご教示願います。 あるいは、全くの見当違いである場合は正しい関数をご教示頂けないでしょうか。 式1: IIF((format([数字列]<0),([数字列],"0000"),([数字列],"00000")) →数字列が0よりも小さい場合→マイナス + 0-4個 0を付ける。 →それ以外の場合→左端に0-5個0を付ける。 という考えのもと、考えました。

質問者が選んだベストアンサー

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

例データI D フィールド1 式1 1 0 00000 2 -3 -00003 3 1 00001 4 156 00156 5 -1000 -01000 6 15000 15000 式1は 式1: Format$([フィールド1],"00000;-00000;00000") マイナスだけが有効数字4桁だが其れで良いのなら 式1: Format$([フィールド1],"00000;-0000;00000") で質問のようになる。 3書式のFormat関数を使う。 順序はエクセルと同じく、正;負;0のときの順

mame1218
質問者

お礼

いつもありがとうございます。 完璧な回答でした。 前提条件(正数は5桁、負数は4桁)も把握でき大変役に立ちました。

その他の回答 (2)

  • IDii24
  • ベストアンサー率24% (1597/6506)
回答No.2

結果に前ゼロを入れたいと云う事は、結果は数値ではなく文字でよい?と云う事になりますが良いでしょうか? その場合は数値を文字に替えてから整えます。 iif([数字列]<0,"-"& right("00000" & cstr([数字列]),5) ,right("00000" & cstr([数字列]),5)) でもゼロだった場合 00000 になってしまうので、もしこれを 0 にしたければ、 iif([数字列]=0,"0",(iif([数字列]<0,"-"& right("00000" & cstr([数字列]),5) ,right("00000" & cstr([数字列]),5)))) て長くなってしまうしパフォーマンスも悪い。VBAでモジュール処理した方が良いとは思います。

mame1218
質問者

お礼

ご丁寧にありがとうございました。 参考にさせていただきました。

  • mitarashi
  • ベストアンサー率59% (574/965)
回答No.1

formatの場所が違ってますね。思いこんでしまうと、間違いに気づきにくいモノです。ご参考まで。 式1: IIf([num]<0,Format([num],"0000"),Format([num],"00000"))

mame1218
質問者

お礼

ありがとうございました。 助かりました。

関連するQ&A

  • Microsoftのaccessのクエリ関数につい

    「負割」というフィールドがあり、0、1、2、3、200という数字が1つ選択できます。これを選択すると、「点数」というフィールドの数字と掛算されます。この合計額が「負担金」というフィールドに表示されるのですが、 ・0,1,2,3のどれかを選択した場合、 IIf(([点数]*[負割] Mod 10)<5,[点数]*[負割]-([点数]*[負割] Mod 10),[点数]*[負割]-([点数]*[負割] Mod 10)+10)) で四捨五入されます。 ・200という数字が選択されると、「点数」×「3」の合計が199まではそのまま計算された数字で表示されますが、200や200を超えても「200」にしかならない。という式を作りたいと思っています。 できないことはこの「200」という数字が選択されたときの関数で IIf([負割]>199,(IIf([点数]*3)>200,200,(IIf(([点数]*3 Mod 10)<5,[点数]*3-([点数]*3 Mod 10),[点数]*3-([点数]*3 Mod 10)+10))),(IIf(([点数]*[負割] Mod 10)<5,[点数]*[負割]-([点数]*[負割] Mod 10),[点数]*[負割]-([点数]*[負割] Mod 10)+10))) このように導き出したのですが、関数が正しくありません。 間違っているのがわかる方、いらっしゃったら教えてください。お願いします。

  • MAX関数

    A,C,E,G,I,K,M列に名前、B,D,F,H,J,L,列に2桁から3桁の数字が約300名分入力されているシート内の最大数値と最低数値を取り出す関数ご教示お願いします。AとB列、CとD列・・・2列だけならMAX関数とMATCH関数で取り出すことは出来たのですが、複数の列で全体から取り出すことが出来ません。よろしくお願いします。

  • Access2000 クエリーでのformat関数について

    Access2000で、テーブル作成クエリーを作っています。 その中で、例えば、 15000という数字を、00015000という形式で落とす場合、 format(項目,"00000000")とすればいいとこまでは理解しています。 これが、-15000のように、負の数字になった場合、同じようにすると、 -0015000となってしまうのですが、 これを、00-15000とするには、どうすればいいでしょうか?

  • Access97の更新クエリーのformat$関数をAccess2000タイプに直したいのですが

    Access97の更新クエリーのformat$関数で format$([印刷]![区分],"@@") 上記の構文で数値を二桁の文字に直している更新しているのですが Access2000では関数を認識してくれません、 format関数でも同じでした Access2000で同じ事が出来る方法を教えてください

  • Excel関数

    Excel2010を使用しています。 A~E列 及び H~K列の1,000行目くらいまで、1ケタから5ケタの数字を入力しています。 重複した数字がないか確認したいのですが、適した関数はありますか? (重複していた場合、指定したセルに「重複」と出るような関数など) セルは空欄の場合もあります。 ご教示いただければ幸いです。よろしくお願いします。

  • Access2000 クエリーでの関数について

    Access2000 クエリーでの関数についての質問です。 例えば、 ○○-○○○○○や、△-△△△△ という文字列があった時に、ハイフンの前の文字だけを抽出したい時は、どのようにすればいいでしょうか?ハイフンの前の数字の桁数は、決まってませんが、最大でも5桁程度です。また、文字列は全て半角です。 大至急知恵を下さい!

  • Excel関数

    お世話になります。 Excelで、あるセル内の「~~Number○○~~」という文字列から、前後の不要な文字列を省いて「Number○○」部分だけを抽出する方法(関数?)はありますか。  注)○○の部分には様々な数字が入り、1桁の場合と2桁の場合があります。 また、「~~Number○○~~」という文字列から、自分で指定した特定の数字を含む場合のみ「Number○○」の文字列だけを抽出する方法もありますか。 ご教示いただきたく存じます。よろしくお願いします。

  • Excel関数について

    おはようございます。初めて質問させていただきます。エクセルの関数で、ご質問があります。エクセル表のA行にはバラバラの数字が縦にずらっと並んでいます。その数字は、桁がばらばらで、10桁、100桁等色々な桁が入っています。 その全ての数字の一番左端の一文字だけを消したいのです。 例えば、112だったら12、21だったら1、1123だったら123という具合にしたいのです。 どのような関数を使用して、一度にそのような処理をすることができるかお教え願えませんでしょうか?

  • ACCESSで10桁の中から中の3桁を抜き出す関数

    ACCESSで7けたの数値7654321から765の部分3桁と43の部分の2桁、21の桁を分けて抜きとりたいのですが、どういう関数を使ったらよいかわかりません、LEFT関数を使ってみたりしたのですがどうも欲しいものが取り出せないので基礎的なことですが教えてください よろしくおねがいします

  • アクセスIIF関数

    はじめまして。ACCESSのif関数について教えてもらいたいことがあります。 dataAの数値に対して、目標数80をこえればその数値分に10を乗算し、未達であれば、0を返すという条件式を行いたいのですが、うまくいきません。以下、自分がやっていたデータを記載します。 テーブル例 dataA 70 80 60 90 クエリ条件式 式1:IIF([dataA]>80,"([dataA]-80)*10","0") 未達については0が返るのですが、超えた場合(真の時)([dataA]-80)*10の式が表示されています。うまく計算させるには、どうしたらよいのでしょうか。ご教授よろしくお願いします。

専門家に質問してみよう