• ベストアンサー

初歩的な質問

例えば「001」という文字列があった場合、左側の0を全て取って「1」としたい場合、どのような関数を使ってコードを記述すれば良いのでしょうか?

noname#15844
noname#15844

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

  • ベストアンサー
回答No.3

数値がInteger型で足りるのであれば変換関数「CInt」を使い変換するのがいいのではないでしょうか? 文字列が入ってたらエラーになるのでIsNumericで数値型かどうか判断してエラー回避をちゃんとして下さい。 If (IsNumeric("0015")) Then intVal = CInt("0015") End If こんな具合に。

その他の回答 (7)

回答No.8

VBのバージョンは6.0で良いですか? Dim strSuji As String strSuji = "001" の様な場合、 Format$(strSuji, "#") で求めれます。 Format よりも Format$ の方が、引数と返値共にStringなので、曖昧性を排除でき、処理も少し速いです。

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

文字列で求めると解釈して Function a001(a) b = Format(Val(a), "#") a001 = b End Function Sub test01() MsgBox a001("02021") End Sub 数値以外の引数を指定すると、スペースが返ります。 初歩的な回答ですが。

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.6

私もvalを使うのが簡単でいいと思うけど、別のアプローチ ----------------------------------------------------- Dim a, oRE a = "001" Set oRE = CreateObject("VBScript.RegExp") '正規表現オブジェクトを使う oRE.Pattern = "^0+" '先頭からの連続する0にマッチさせる a = oRE.Replace(a, "") '先に指定したパターンにマッチする部分を取り除く

回答No.5

当初の質問に対する回答とは異なりますが、ご容赦ください。 回答の中に、Val関数を使用するという回答がありますが、Val関数は型を特定しないことから変換に有効的に思われがちですが、逆に言うとVB任せの変換になるので、コーディング的にはあまり良くありません。 その値がどういう性質のものなのかを考慮し、それに見合った型の変数に格納するのが望ましいと思います。 従って、No.3さんの回答のように、値をチェックして、No.2さん、No.3さんのように然るべき型に変換すべく、CInt関数やFormat関数を用いることが良いと思います。

回答No.4

0を除いた結果を数値として使いたいのか、文字列として使いたいのかがわからないのでなんともいえませんが...、私もNO1のVALがいちばんわかりやすいと思います。 valは引数を数値化するものなので、"001"という文字列は「1」という数値に変換されます。 具体的な使い方はこんな感じです。  ↓ Dim mozi as string Dim suti as intejer mozi = "001" suti = val(mozi)   →    suti=1

  • skink
  • ベストアンサー率38% (7/18)
回答No.2

formatをつかえばよいかと。 たとえば A = "00015" A = Format(A, "0") とした場合、Aは15になるはずです。

  • taunamlz
  • ベストアンサー率20% (175/843)
回答No.1

数字だけの文字列でしたらvalを使えばいいと思います。ただ、文字列ではなくなりますけど。

関連するQ&A

  • PL/SQLの初歩的な質問

    失礼します。 PL/SQLについて、初歩的な質問をさせてください。 DBに以下のような文字列が入っていて、 それを抽出し変数にセットするとします。 A'1234567'→変数aにセット B'  12A345B'→変数bにセット 質問1 Aの文字列を取得した際、'123-4567'のように 間にハイフンを付けて変数aにセットする場合 どのようなPL/SQLの記述になりますか? 質問2 Bの文字列を取得した際、'12345'のように 左側の空欄と数字以外の文字を取り、 なおかつ数字を半角にして変数bにセットする場合 どのようなPL/SQLの記述になりますか? お手数お掛けしますが ご回答宜しくお願いします。

  • 初歩的な関数なのですが、教えてください。

     A列 B列 C列 D列 E列 1               鶴    2 あ  鶴  あ 3 い  亀   4 う   5    鶴 6 う 7 え  鶴  え 8    亀 9 E1のセルに「鶴」(任意の文字)をいれます。 A列に文字が入っていて、かつ、B列の文字=E1の文字(鶴)ならA列の文字をC列に返す。 A列に文字が入っているが、B列の文字がE1の文字と異なる(亀)ならC列は空白。 A列に文字が入っているが、B列の文字が空白ならC列は空白。 A列が空白なら、B列に鶴、亀、その他の文字が入っていても空白。 A列、B列ともに空白なら、C列も空白 上記を可能にする関数がわかりません。 IF関数を使うのだと思うのですが。 エクセルの2003です。よろしくおねがいします。

  • 初歩的なプログラムなんですが・・・

    まだ勉強始めたばっかりで色々ネットのページも調べてみたんですがどうしてもわからないのでどなたか教えてもらえませんか?? scanf()関数を用いて同じ長さの文字列を2つ入力して、この2つの文字列が同じ文字列ならば、 「等しい文字列を入力」と画面表示して、異なるならば「異なる文字列を入力」と画面表示したいんですが^^; 実行結果は 同じ長さの文字列を2つ入力しなさい abcde abcde 等しい文字列を入力 のような結果がほしいんです。 どなたかお願いします^^;

  • 【VBA】IDを入力して文字列を取り出す関数

    ExcelのVBAにてプログラムを作成しています。 IDを引数に渡して、文字列を取り出すような関数を作成しようと思っていますが、 何か良い作成例をご教示頂けないでしょうか? 例としては、このような形を考えています。 ※リソースファイルなどを使用せず、全てコードにて記述。 GetString("TEST_ID") '引数のIDに対応する文字列を返す(ID、文字列はテーブルなどで定義) お手数ですが、よろしくお願いします。

  • 【EXCEL】初歩的な質問ですが・・・

    お世話になっております。 EXCEL2003を使用しています。 A1セルに  “○月プリンタ使用状況”  と表示させ、○に自動的に当月を表示させたいのですが、どうやるのでしょう? 素人的な考えでnow関数を使って、出てきた文字列をFIND,LEN,RIGHT関数などを使用して抜き取ろうかと思っていたのですが、数字が抜き取られてうまくいきません。ウワァァァァァァヽ(`Д´)ノァァァァァァン!

  • EXCELで右3文字を除く関数

    EXCEL2002を使用しています。 あるセルの文字列の右3文字を除いた左側の文字列を 返す関数を教えてください。 RIGHT関数と何かの関数を組み合わせていたような気が するのですが、調べてもなかなかヒットしません。 宜しくお願いします。

  • 【C言語】文字列による処理の分岐について

    いつも丁寧な解説拝見しております。 C言語について質問させて頂きます。 シリアル通信によって受信した1バイトの文字列があるとします。 この文字列のパターンよって処理の分岐をさせたい場合、コードはどのように書けば良いのでしょうか。 より具体的に申しますと、 →文字列パターン1の場合、関数1を呼び出す。 →文字列パターン2の場合、関数2を呼び出す。 →文字列パターン3の場合、関数3を呼び出す。・・・・・・ と、100パターンほどの文字列があり、それぞれにおいて異なる関数を呼び出したいと考えております。私の理解は以下に示す通りなのですが、どうも正しい処理が分らないでいます。 ・受信した文字列がどのパターンなのかを判断するために、strcmp関数で比較を行う。 ・多分岐なので、switch case文かelse if文を用いる。 この場合、条件式の中でstrcmp関数による比較を行えば良いのでしょうか。簡単にコードを示して頂ければ幸いです。C言語初心者なので理解に間違いがあるかもしれませんが、どうぞよろしくお願い致します。

  • エクセルで重複する文字列を取り出し、取出した文字列をそれぞれ買うん等する方法?

    エクセルで重複する文字列を取り出し、取出した文字列をそれぞれ買うん等する方法? ---------------- あああ ---------------- いいいいい ---------------- ううううう --------------- あああ -------------- いいいいい -------------- とあった場合 あああが2つ、いいいいいが2つ、うううううが1つと数える関数またはサンプルコードを教えて下さい。

  • Wordでの質問(初歩的です)

    Wordで、例えば6行の表を作成し、それぞれ文字を入力したとします。 1.3.5行目の文字列の配置を縦横共中央揃えにしたい場合、まず1行目を縦横中央揃えにし、あとはF4キーを使うしかないのでしょうか? Ctrlキーを使って1.3.5行目を一度に操作しようとしてもできませんよね? 文字のフォントなどはCtrlキーを使い複数個所を選択して、一度に操作できるので、なぜ文字列の位置は変更できないのかがナゾです。 どういう場合にCerlキーが使え、どういう場合に使えないのでしょうか?

  • 同一セル内に関数と文字列を同居させるには?

    関数を含むセルに、関数以外のモノを表示させるには どのように記述すればよいのでしょうか。 同じセル内に、"文字列"+"関数で取得した文字列"+"文字列"を表示させたいのです。 ご存知の方がいらっしゃいましたら、教えていただけると嬉しいです。 よろしくお願いします。

専門家に質問してみよう