• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MicrosoftAccessでのLEN関数)

MicrosoftAccessでのLEN関数の使い方とは?

このQ&Aのポイント
  • MicrosoftAccessでのLEN関数を使ってテキストからデータベースへの取り込みを行う方法を学びましょう。
  • LEN関数は文字列の長さを取得するための関数です。
  • 質問文章のクエリの式3で発生しているエラーメッセージについても解説しています。

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

  • ベストアンサー
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.4

失礼しました。No3もそのままコピー したので直っていませんでした。 以下です。 Right([データベース],Len([データベース])-1) -1とするときにキーボードの入力モードが 全角文字なっているのではと思いますが。

ichao0803
質問者

お礼

返信ありがとうございます。 式1: Right([フィールド1],(Len([フィールド1])-1)) で表示できました。 ご連絡頂いた方法とどちらがいいか、検討してみます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (3)

  • piroin654
  • ベストアンサー率75% (692/917)
回答No.3

No1です。 エラーの内容が気になったので 質問の式をメモ帳に貼り付けてみると ‐1 の部分で-は全角ハイフン、1は全角文字の1 になっています。このために 『指定した式の構文が不正です。例えば演算子が ないときにオペランドを指定しています』 というエラーが生じています。この部分を すべて半角で置き換えると、クエリでは #ERRORと表示されるはずです。 そこで、No1のように Right([データベース],Len([データベース])‐1) 設定すると正常にデータが表示されます。

全文を見る
すると、全ての回答が全文表示されます。
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.2

かっこ閉じの位置がおかしいです。 Right([データベース],Len([データベース])-1) とするか、もしくは除きたい文字が"+"と決まっているのなら Replace([データベース],"+","") という方法もあります。 (こちらだと、先頭以外の"+"の文字も除いてしまいますが)

ichao0803
質問者

補足

Right([データベース],Len([データベース])‐1) やってみましたが、結果は駄目でした。 Replaceはいいアイディアだと思います。 Len関数が使えないのが悔しいですが・・・。

全文を見る
すると、全ての回答が全文表示されます。
  • piroin654
  • ベストアンサー率75% (692/917)
回答No.1

>Right([データベース],Len([データベース]‐1)) Right([データベース],Len([データベース])‐1) では?

ichao0803
質問者

補足

Right([データベース],Len([データベース])‐1) やってみましたが、結果は駄目でした。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • VBAのLEN関数

    VBAのLEN関数で1つのセルではなく横一列の範囲を指定して、それらのセルに入っている文字数の合計を取得する方法はありますか? また文字数を取得する際、全角と半角が混じっている可能性があるのですが、 半角で文字数を取得することはできるでしょうか? 何がしたいかといいますと、横一列に並んでいる複数セルの値を 別のセルに入力規則として入力させます。 その際、エクセルの仕様的に合計の文字数が半角255文字を超えないかチェックしたいのです。

  • マクロでLen関数の使い方がわかりません。

    マクロでLen関数の使い方がわかりません。 基幹システムのデーターベースをエクセル出力する機能があります。 その吐き出したエクセルファイルを使って 印刷したり、別のシステムにインポートしています。 このデーターの行数は吐き出すたび違います。 吐き出したエクセルのD列にあるデータですが ここは必ず半角数字7桁固定長と決まっています。 7桁に満たないデータは0で埋めて7桁になっています。 基幹システム上でも7桁で表示されています。 例↓ 0000002 0002222 0000000 ですがエクセルに吐き出されると桁数が変わってしまいます。 (なぜか0は空白にならず0と表示されています) 書式設定は[標準]でエラーマークが出ていて (数値が文字列として保存されています)となっています。 例↓ 2 2222 0 印刷時は後者、インポート時には前者である必要があるので 以下のようにE列は残したままF列に7桁表示を加えたいです。      E   → F -------------------------- 1     2  → 0000002 2  1234567 → 1234567 3    333 → 0000333  4   22 → 0000022 5   4444 → 0004444 6   0 → 0000000 以下のマクロを作成しましたが動作しません。 Select Caseでという考え方がまずいのでしょうか? (それ以前にLen関数の使い方もわかっていません。) どうかよろしくお願いします。 Sub 七文字化() 行 = 2 Do If Cells(行, 2).Value = "" Then Exit Do n=Cells(行,2) Select Case True '6文字 Case Len(n) = 6 '先頭に0を追加 myStr = "0" & n '5文字 Case Len(n) = 5 '先頭に0を追加 myStr = "00" & n '4文字 Case Len(n) = 4 '先頭に0を追加 myStr = "000" & n '3文字 Case Len(n) = 3 '先頭に0を追加 myStr = "0000" & n '2文字 Case Len(n) = 2 '先頭に0を追加 myStr = "00000" & n '1文字 Case Len(n) = 1 '先頭に0を追加 myStr = "000000" & n '7文字ある時 Case Else myStr = n Cells(行, 3).Value = myStr End Select 行 = 行 + 1 Loop End Sub

  • Access datediff関数について

    クエリを使って、社員の定年までの年数を計算したいと 思っています。 datediff関数を使うのかなと思いますが、行き詰ってしまいました。 <テーブルフィルード名> ・氏名 ・今日の日付 ・生年月日 など <クエリ> で定年までの年数を調べたいので、 ・氏名フィールド ・演算式フィールドとして 定年までの年数:([今日の日付],[???],"Y") かなと考えています。???の部分も式が分からないのですが 教えて頂けないでしょうか? よろしくお願いいたします。

  • ACCESS2010の文字列の抽出とリプレイス関数

    どなたかお教え下さい。 ACCESSのクエリを教えて下さい。 同じテーブル内で (1)というフィールドから(テキスト型) Like演算子で 下記の例を 抽出した上で 例 ab1cd (2)というフィールドの(テキスト型) AというものBに変換させるリプレイスの関数を 下記URLの参考例通りに書いたのですが、 結果が0となり クエリが実行されません。 どなたかご教授お願い致します。 参考サイトの例 http://office.microsoft.com/ja-jp/access-help/HA010066611.aspx#BM2 指定パターンに一致する Like "Chi??" 名前の文字数が 5 文字であり、かつ最初の 3 文字が "Chi" である国/地域 (China や Chile など) のレコードを返します。 メモ 式では、? と _ は 1 文字を表します。ワイルドカード文字ともいいます。文字 _ は、文字 ? を使用する式やワイルドカード文字 * を使用する式で使用することはできません。ワイルドカード文字 _ は、ワイルドカード文字 % を含む式で使用できます。

  • Accessのクエリで、CStr関数を使った項目のグループ化と抽出のエラー

    アクセスで「TEST1」という名のクエリでCStr関数を使って数値を文字型にしている「項目1」という名のフィールドがあります。(他にもフィールドはあります) 別のクエリ(「TEST2」)で、「TEST1」クエリを使って、「項目1」フィールドをグループ化し、さらに抽出条件に『 "1" 』と入れて実行したところ、 『集計関数の一部として指定された式 '[TEST1].項目1="1"' を含んでいないクエリを実行しようとしました。』 とメッセージが出て実行できませんでした。 ◎ 数値を文字型にしたものをグループ化しさらに抽出条件で絞り込みたいのですが、どうしたらいいのでしょうか? 「TEST1」クエリをテーブルにしないで実行したいのですが。。。 わかる方がいらっしゃったら、教えてください。よろしくお願いします。

  • アクセスのFormat関数について。

    アクセスのFormat関数で下記の入力では「演算子がないときにオペランドを指定しています」と出ます。どこが間違っているのか教えてください。すみません。 集計月:Format([依頼日]"yyyy/mm")

  • Access2000 Len関数 フォームで困っています

    最近Accessを始めた初心者です。 レポートで出力する際に文字が切れないように、フォームで入力文字数の制限をするため、Len関数でプロパティの入力規則に以下の設定をしました。 入力規則 Len([フィールド名])<51 エラーメッセージ 50文字以下に調整してください。 で、入力テストをしてみたところ、50文字まで入力可能、51文字からエラーメッセージが表示されるところまでは問題ないのですが、エラーの発生したテキストボックスを空にして、他のテキストボックスへ移動すると、また同じエラーメッセージが出てしまいます。 その後は何文字か入力しないと次のテキストボックスに移れなくなってしまい、入力する場所を間違えた場合にフォームを開きなおさねばならない状態です。 他には新しいレコードに移る際に、コードに以下のメッセージを設定していますが、他は何もしていません。 Private Sub Form_BeforeUpdate(Cancel As Integer) Beep If MsgBox("情報が変更されています! 変更されたデータを保存しますか?", _ vbYesNo + vbQuestion) = vbNo Then Me.Undo Cancel = True End If End Sub どなたかご教授いただけないでしょうか。

  • VBA for Excedで構文エラー(ユーザー関数でIFを使いたい)

    以前、こちらで教えていただいた関数を頻回に使用する必要がでてきました。 関数は =IF(RIGHT(文字列,1)=CHAR(10),LEFT(文字列,LEN(文字列)-1),文字列) です。 最後に改行コードが入っていたらそれを削除したいので、関数用の列を追加し、右側の列に上記の関数を入れる仕組みです。 構文自体は難しくないのですが、手入力するには少々長い。 既に入力してあるファイルからコピーしてくるにはセルの指定(上記の"文字列")が元のファイルになってしまう。 でユーザー関数にしてみようと思って ------------------- Function DELKAIGYO(文字列 As Range) DELKAIGYO = IF(RIGHT(文字列,1)=CHAR(10),LEFT(文字列,LEN(文字列)-1),文字列) End Function ------------------- としてみたのですが、構文エラーとなってしまいます。 なぜでしょうか?? ユーザー関数にIF文は使用できないのでしょうか? またそういったことは何で調べればよいのでしょう? ネット上は探した(つもり)です。 環境:WinXP(SP2),Excel2002

  • Access Dcount関数で引数が指定できない

    ACCESSのVBAで社内システムを作っています。 Dcount関数の引数1であるフィールド名を指定すると、下記のようなエラーが出てしまいます。 「クエリ式'Count(2A)'の 構文エラー:演算子がありません。」 色々切り分けして以下のような法則を見つけました。 ・フィールド名が数字のみの場合→使用できる ・フィールド名の先頭が数字以外の場合→使用できる ・フィールド名の先頭が数字(全半角共に)の場合→エラー発生 全社システムからACCESSにインポートするデータのフィールド名が「2A」「3A」などの商品コードになっているためこのまま使用したいのですが、手段はありますでしょうか。 ■使用しているツール Microsoft Office Access 2007 よろしくお願いします。

  • Left関数とRight関数を合わせたような

    こんにちは いつもお世話になっています。 A列に文字列があります。 文字の長さは不定ですが、左から3文字、右から4文字は共通して不要なので削除したいです。right,leftの両関数を合わせたような関数を教えてください。 二列で分けて処理するのではなく一回の関数で処理希望です。 =LEFT(A2,LEN(A2)-4)&RIGHT(A2,LEN(A2)-3) こんなので失敗しています。 よろしくお願いします エクセル2007

専門家に質問してみよう