痔になりやすい生活習慣とは?

会社の上司からこのような相談を受けました。

バージョンはOFFICE2003を使用しています。
EXCELのデータをACCESSのテーブルにインポートしました。
このデータには、「000123」と先頭に0が付く6桁のコードのデータもあり、EXCEL上では文字列として認識されていました。
このデータをインポートしたところ、ACCESS上では「123」というように表示されています。
データ形式を「テキスト型」に直しましたが、コードは直りません。

データの量が多いため、なるべく簡単に訂正する方法が知りたいとのことでした。
よい方法があれば、ご教授をお願いします。

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

A 回答 (5件)

更新クエリで行なう場合


フィールドの一覧に該当のフィールド名をセット
更新欄に Format(CLng([フィールド名]),"000000") として更新すれば
お望みの状態になります。

インポートし直すなら、
現テーブルのレコードを削除して、EXCELのインポートでインポート先を今のテキスト型に設定したテーブルに直接インポートするか
EXCELのレコードの先頭(1行目がフィールド名なら2行目)に
テキスト型のセルには「A」、数値型のセルには「9」、日付型のセルには日付をセットして新規テーブルにインポートしてください。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
Formatを用いた方法でひとまず解決いたしました。

お礼日時:2008/02/04 22:21

私も下記やってみました。


エクセルSheet1 A1:C6
A列は書式を文字列にして、データを入力しました。
第1行目はフィールド名にしておいたほうが良さそう。
番号コード計数
000123a1
002345b24
000012c3
002349d4
012345e56
ーー
アクセスのメニューの方のファイル
外部データの取り込み
インポートエクセルのファイル名の指定
ウイザードの画面に入り
Sheet1など指定
つぎへ
先頭行はフィールド名次へ新規テーブルに保存
で結果
ID番号コード計数
1000123a1
2002345b24
3000012c3
4002349d4
5012345e56
と先頭の0-0は除かれていません。
もう一度やってみてください。2002です。
(途中データ型がグレイアウトしているのが気になったが)
>簡単に訂正する方法が知りたいとのことでした
モジュールを組むとか、クエリでFormat関数で整形するとかあると思うが、もう一度上記のようにやってみてください。
http://www.accessclub.jp/actips/tips_115.htm
など
>会社の上司からこのような相談を受けました。
回答者には関係ないこと。書かないでも良いこと。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
Formatを用いた方法でひとまず解決いたしました。

お礼日時:2008/02/04 22:21

>「000123」と先頭に0が付く6桁のコードのデータもあり


付かないものもあるのでしょうか?
その場合はもう一度インポートしなおす必要がありますね
インポート時に[標準]ではなく[テキスト]を指定すれば
Excelデータのとおりインポートできます

そうではなく全て頭に0をつけて6桁にすればいいいのであれば
頭に0をたくさんつけて右の6個を取り出せばいいですね

Left("000000" & フィールド名,6)
    • good
    • 2
この回答へのお礼

ご回答ありがとうございます。
Formatを用いた方法でひとまず解決いたしました。

お礼日時:2008/02/04 22:21

#1です。


エクセルから直接インポートせず、一旦CSVファイルに落としてから、アクセスにインポートする手も有ります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
Formatを用いた方法でひとまず解決いたしました。

お礼日時:2008/02/04 22:20

インポートする際に、フィールド毎に取り込むデータ形式を選択できますし、フィールド形式を設定したインポート用のテーブルを予め用意したり、


インポート定義を保存して、インポートの際に、その定義を呼び出す等、
方法は有ります。

インポートの都度、新規テーブルへ何も指定せず漫然とインポートしている限り同じ事が起こります。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
Formatを用いた方法でひとまず解決いたしました。

お礼日時:2008/02/04 22:20

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

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

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

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

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

Q【急】Access 4桁の数字の頭に0をつけて5桁にしたい

4桁の数字が入っているフィールドで、頭に0をつけたいです。
一括で簡単にできる方法を、至急教えて下さい!

Aベストアンサー

sanbitです。
クエリでしたらできますか?更新クエリで案内します。
(1)該当テーブルで選択クエリを作成ください。
(2)このクエリをデザインモードで開く→クエリ画面で右クリックするとプルダウンメニューがでます。
→一番上のSQLビューをクリック→何やら表示しています。これを消して

UPDATE テーブル名 SET テーブル名.フィールド名 = "0"+[フィールド名]
WHERE Len([フィールド名])=4;

2行をコピーしてください、
テーブル名とフィールド名3箇所(同じ名前になります)を変更してください。
スペースドット 大小のカッコ など間違うと大変です。
(3)クエリは一旦閉じてダブルクリックで実行します。
クエリは画面上で右クリックで、表示モードが変えられます。
なお、念のため元のテーブルはコピーを取ってから実行ください。
データは更新してしまいます。間違っていたら元に戻せません

なお、前回のフォーム閉じてフォームをクリックすれば実行モードになります、ボタンをクリックすればイベントに書いた内容を実行してくれます。
フォームはデータを表示させたり、ボタンでいろんな処理をするのにしようします。

sanbitです。
クエリでしたらできますか?更新クエリで案内します。
(1)該当テーブルで選択クエリを作成ください。
(2)このクエリをデザインモードで開く→クエリ画面で右クリックするとプルダウンメニューがでます。
→一番上のSQLビューをクリック→何やら表示しています。これを消して

UPDATE テーブル名 SET テーブル名.フィールド名 = "0"+[フィールド名]
WHERE Len([フィールド名])=4;

2行をコピーしてください、
テーブル名とフィールド名3箇所(同じ名前になります)を変更してください。
ス...続きを読む

QAccessのクエリで、Left関数を使用して、7桁の数値を抜き出す方

Accessのクエリで、Left関数を使用して、7桁の数値を抜き出す方法。
IDが8桁で入力されているのですが、左から7桁だけを抜き出して、全てのレコードを表示させたかったのですが、誤って入力されている7桁のIDしか表示されませんでした。
いつもExcelを使用している感覚だったので、文字の左から7桁の数値や文字列を抽出して表示してくれるものと思っていました。
元のテーブルに入力されているIDを変更することなく、
クエリで、7桁だけにして、その取り出した7桁で区別し、グループとして認識し合計を出したいと考えているのですが、どうすればよいのでしょうか。
宜しくお願い致します。

Aベストアンサー

>Left関数をする前は、5000行程なのですが、関数を加えたとたん4300程度に減ってしまいます。

関数を加えるのでは無く、関数だけ(演算フィールドのみ)のクエリを作成をして実行させます
単にleft関数で左から何文字取れという演算フィールドしか持たないクエリを実効させれば、指定した桁数に満たない場合には実際にある桁数まで、一文字も入っていない場合には0を返して、全データ分のクエリ結果を返します

全件分のデータが帰って来ないという事は作成しているクエリに問題ありの可能性高いです

先の書き込みに書きましたが、手順は演算フィールドのみのクエリを作成し実行させ全データが取得出来る事を確認してから、この演算フィールドのみのクエリに必用なフィールドを追加してゆくって事してください

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"...続きを読む

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

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

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

Aベストアンサー

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

Qアクセスでcsvに出力した際、頭の0が消えてしまいます

アクセスからテーブルをcsv形式でエクスポートしようとしています。
エクセルでは頭の0がきちんと残りますが、csvだと消えてしまいます。
(取引先コード012345が頭の0が落ちて12345になってしまう)
これを最初の0もきちんとある状態でcsv形式にエクスポートするには
どうすればいいのでしょうか?
尚テーブルの時点ではフィールドの型はテキスト型になっています。
どうしてもcsv形式でないとならない為、困っています。
宜しくお願いします。

Aベストアンサー

正しくエスクポートされ
"012345","abcd",123,"あいう"
となっているCSVファイルを「エクセルで開く」と、
12345 abcd 123 あいう
と言うようにエクセルが勝手に変換して(文字列を数値に変換、つまり頭のゼロを勝手に削って)からシート(セル)に読み込みます。

なので「CSVファイルの中身を確認する場合、エクセルを使用してはいけない」のです。

CSVファイルの確認は、メモ帖など「勝手に変換したりしないアプリ」で確認しなければなりません。

「エクセルで開いている限り、何をしても無駄」なので、エクセルで開いてはいけません。

QAccess テキスト型に対する指定桁での0埋め方法

お世話になります。
表題のとおり、Access テキスト型に対する指定桁での0埋め方法を探しております。
対象とする値が数値である場合は、「Format」関数で処理が行えるのですが、先頭が文字列の場合ですと、0埋め処理がスルーされてしまいます。
以下のサンプルのデータに対し、指定桁での0埋め方法について、良い案がありましたらおしえてください。

~~サンプル処理前~~
[項目1]
021
オ21
ヌ2
320

~~サンプル処理後~~(Format関数 6桁を0埋め)
[項目1]
000021
オ21
ヌ2
000320

~~サンプル目指す形~~(6桁を0埋め)
[項目1]
000021
000オ21
0000ヌ2
000320

Aベストアンサー

Right("000000" & [項目1],6)

QACCESSでの桁数のあわせ方

EXCELで
(1)ERPソフトからの抽出データと
(2)手入力で管理しているデータ
をACCESSで取り込んで、加工をします。

それぞれ入力方法が
(1)のERPからのデータは必ず10桁(0000012345とか0000000123)で
(2)は有効分(12345とか123)
となっていますのでACCESSへ、インポートする際に
桁数が異なってしまい、クエリーで結び付けられません。

そこで、(2)のデータを(1)のように必ず10桁にして
桁数あわせに0が入るといった方法、つまり12345なら0000012345、123なら0000000123と変換させる
方法はありませんでしょうか。
出来れば、(2)をACESSで取り込んでからACCESSで処理をしたいです。

Aベストアンサー

format関数を使用してクエリーで変換するのがよいかと思います。
変換したいフィールドを「顧客コード」とします。
更新クエリーでフィールドに「顧客コード」、
レコードの更新に「=format([顧客コード],"0000000000")」と入れます。
「!」実行ボタンで完了です。

10桁のものはそのまま、10桁以下のデータの頭にゼロが付く形となります。
その代わり、この式のままではブランクの場合も10桁のゼロで埋まってしまいます。

QAccessでテキスト型→数値型への変換方法

Access2000を使用しており、クエリを作成しています。
テーブルから[回答]というフィールドをひっぱってきています。
フィールド[回答]にて、最初の3文字に対応時間を入れており、
Mid関数にて対応時間を抽出しました。

対応時間:Mid([回答],1,3)

しかし、Mid関数でとったフィールドは文字列として認識されています。(Ex:001など)
この文字列を数値に変換する関数、又は方法などお教えくださいませ。
よろしくお願い致します。

以下にイメージ図を記載致します。
=================================
回答            対応時間
001 ●●●~        001
=================================
(対応時間を数値で扱えるようにしたい、ということです)

Aベストアンサー

対応時間が、整数(-32,768 ~ 32,767)であれば、

対応時間:CLng(Mid([回答],1,3))


また、長整数(-2,147,483,648~2,147,483,647)であれば、

対応時間:CLng(Mid([回答],1,3))

とすればokのハズです。

QACCESS 重複データを1つだけ表示したい(初心者です)

ACCESSで複数のフィールドに全く同じレコードが複数存在します
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
愛知      田中      12
愛知      田中      12
三重      山本      23
三重      山本      23
岐阜      鈴木      33
岐阜      鈴木      33

もともと他のデーターベースからCSVで落としたものをインポートしているので、データの存在自体はどうしようもありませんが、これらの重複しているデータを1件だけ表示したいのです。つまり
(例)
フィールド1  フィールド2  フィールド3
愛知      田中      12
三重      山本      23
岐阜      鈴木      33

どのようにすればよいでしょうか。

Aベストアンサー

クエリにて[固有のレコード]プロパティーを[はい]にします

QAccess 同じデータをたくさんのレコード(同一列)に一度に入力するには

いつもお世話になっています。
Accessの基本的な入力に関して教えてください。
同じデータをたくさんのレコード(同一フィールド)に一度に入力するには、どうすればよいか教えてください。

Excelの列方向へのコピーと同じような感覚でできないのでしょうか?

よろしくお願いします。

Aベストアンサー

質問の回答にならないかも知れませんが・・・

1.EXCELでコピーするための元データを作成します
  ※仮にレコードが1000件ある場合はEXCELで1000行作ります。

2.Excelのデータをコピーします。

3.Accessのテーブルを開きます。

4.先頭レコードの貼り付けをしたい項目にカーソルを合わせます。(カーソルは白の十字)

5.下方向へドラッグし、項目を選択します。

6.貼り付けをします。

※貼り付けに失敗した場合、元に戻せませんので必ず元ファイルのコピーを取ってから行ってください

よろしければ、お試し下さい


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

人気Q&Aランキング