• ベストアンサー

エクセルのユーザー定義で

エクセルのユーザー定義で、打ち込む数値の途中にアルファベットが含まれる場合アルファベットはそのまま表示させたいのですが、無理なのでしょうか? 例えば、打ち込む数値が「1234561」のとき表示は「123456-1」 「12345B1」のときは「12345B-1」というふうには出来ないのでしょうか?

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.5

操作例: A列に0000"A"0-0のユーザー定義の表示形式を取り付けておく シート名タブを右クリックしてコードの表示を選ぶ 現れたシートの内容を全て消去し、改めて下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range)  dim h as range  on error resume next  for each h in application.intersect(target, range("A:A")) ’実際に合わせて修正   if h <> "" then   h.numberformat = "0000A0-0"   if application.istext(h) then   application.enableevents = false   h = application.replace(h, len(h), 0, "-")   h = application.replace(h, len(h)-2, 0, "A")   application.enableevents = true   end if   end if  next end sub ファイルメニューから終了してエクセルに戻る A列に123451や1234A1とデータを記入する。 手でやりますとお話ししたことを、代わりに機械がやってくれます。

yatchky303
質問者

お礼

ありがとうございます! 出来ました。 勉強してスキルを高めたいと思います。 ありがとうございました。

その他の回答 (5)

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.6

No.4です。 D列で操作したい!というコトなので、 前回のコードでOKであるという前提です。 Columns(1)を Columns(4) または Range("D:D") に変更してみてください。 尚、前回のコードの場合、頭が「0」から始まる場合はいくら7文字を入力しても 「入力値が不正」だとメッセージボックスがでますので、 D列の表示形式を「文字列」にして操作してみてください。 何とかご希望通りになれば良いのですが m(_ _)m

yatchky303
質問者

お礼

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

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.4

こんにちは! 横からお邪魔します。 No.3さんの補足を読ませていただくと、最初の質問内容と状況が違ってきていますが・・・ >実際はもう少し複雑で「1234511」で「12345A1-1」となるユーザー定義 >「00000"A"0"-"0」を使っていて >「12345B1」で「12345AB-1」にしたいのですが とありますので、一例です。 セルの表示形式で操作するのではなく、文字列データとしてみてはどうでしょうか? A列でマクロが実行されるようにしていますので、A列のセルの表示形式は「標準」にしておいてください。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストして、A列に7文字のデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から If Intersect(Target, Columns(1)) Is Nothing Or Selection.Count <> 1 Then Exit Sub Dim str As String Application.EnableEvents = False str = Target If Len(str) = 7 Then Target = Left(str, 5) & "A" & Mid(str, 6, 1) & "-" & Right(str, 1) Else MsgBox "入力値が不正です。" Target.Select Selection = "" End If Application.EnableEvents = True End Sub 'この行まで こんな感じではどうでしょうか?m(_ _)m

yatchky303
質問者

補足

ありがとうございます。 まだ実際に試してはいないのですが、 A列ではなくD列で使用するにはColumns(1)の数値を変えればいいのでしょうか? 素人で申し訳ないです。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.3

一言目に回答した通り、まずユーザー定義じゃ出来ません。信じる信じないはご自由に。 >以外の方法 具体的にどうしたら出来るのかは、既に回答済みです。他に方法はありません。 #参考 Bのセルに「0000"B-"0」とユーザー定義を設定し12341と記入させ、 Aのセルに「0000"A-"0」と異なるユーザー定義を設定し12342を記入させる、 そんなウマシカ的方法でも「出来ます」 >無理なのでしょうか スキルさえあれば、出来ます。 操作例: A列に00000-0のユーザー定義の書式設定を取り付けておく シート名タブを右クリックしてコードの表示を選ぶ 現れたシートに下記をコピー貼り付ける private sub worksheet_change(byval Target as excel.range)  dim h as range  on error resume next  for each h in application.intersect(target, range("A:A")) ’実際に合わせて修正   if h <> "" then   h.numberformat = "00000-0"   if application.istext(h) then   application.enableevents = false   h = application.replace(h, len(h), 0, "-")   application.enableevents = true   end if   end if  next end sub ファイルメニューから終了してエクセルに戻る A列に123451や1234A1とデータを記入する。 手でやりますとお話ししたことを、代わりに機械がやってくれます。

yatchky303
質問者

補足

わぁ、ありがとうございます! 実際はもう少し複雑で「1234511」で「12345A1-1」となるユーザー定義 「00000"A"0"-"0」を使っていて 「12345B1」で「12345AB-1」にしたいのですが、 先のコードでどこを修正したらよろしいでしょうか? スキルがないので、何度もすみません。

  • Mikenuko
  • ベストアンサー率77% (7/9)
回答No.2

こんにちわ。 状況がよく分かっていないので的外れな回答になっているかもしれません。 入力された内容を文字列として認識するには 「@」 を使用します。 現在、手元に確認できる環境がないため憶測での回答になってしまい申し訳ないのですが 「ユーザー定義」->「種類」に 「@@@"-1"」 のような形式で可能ではないでしょうか。 意味合い的には文字列の末尾に「-1」を付加している状態です。ダブルクォーテーションで囲まれた文字は、文字列として認識できるようになります。

yatchky303
質問者

お礼

ご回答ありがとうございます。 「@@@"-1"」では「1234B11234B11234B1-1」となります。 「1234B1」で「1234B-1」にしたり「1234A2」で「1234A-2」したりもしたいのでだめです。 どうやらできないっぽいです。ありがとうございました。

  • keithin
  • ベストアンサー率66% (5278/7940)
回答No.1

数字だけ(数値)なら問題なくできることですね。 でも文字を含んだデータでは、そういう事は全くできません。 B込みのデータを記入する際に、手で-まで書き足して記入するしか、出来ることはありません。

yatchky303
質問者

補足

ご回答ありがとうございます。 ユーザー定義以外の方法でも無理なのでしょうか?

関連するQ&A

  • Excelのユーザー定義

    よろしくお願いします。 Excelのセル書式、表示形式のユーザー定義です。 数値を千単位にする場合は  #,##0, でできますが、百単位や万単位の場合にはどうすればよいかご存知の方がいらっしゃいましたらよろしくお願いします。

  • ユーザー定義について

    エクセルの書式設定でユーザー定義についてですが、##-##だと11-11のように数字だけですが1A-11のように二つ目をアルファベットの小文字を打って大文字にしたいのですが、ユーザー定義では無理ですか?他の方法でも結構です、わかる方お願いします。よろしくどうぞ。

  • エクセルのユーザー定義

    エクセルのユーザー定義について質問がございます。 セルの書式設定、ユーザー定義にて G/標準を利用しました。 "支払額"G/標準"円" と入力しました。 123456と数値を入力すると 支払額123456円と表示されます。 この123456と表示される物に コンマを付けたいのですが どうすればよろしいでしょうか? 支払額123,456円となればいいのですが・・・ また数値は、半角で表示されてしまいます 全角表示も可能でしょうか?

  • エクセル2007の、ユーザー定義について

    エクセル2007の、ユーザー定義について セル範囲に、文字列、0、1、0.5 の値がランダムに、複数あります。 この範囲に、0を表示させないように、ユーザー定義にて、 「#;-#;"";@」 を設定したところ、0は消えたのですが、0.5が1と表示されます。 元々の1、文字列はそのままです。 0.5(値を計算に使います)を0.5と表示させたまま、0を表示せず、1、文字列はそのままに 表示させるにはどう設定すればよいでしょうか? 良い方法があれば、よろしくお願いいたします。

  • エクセル ユーザー定義での単位のつけ方

    数値に単位、例えば「円」と付けたい場合、そのまま打ち込むとその後その数値を計算出来なくなってしまいますよね? 表示上は単位が付いているように表示させておいて、計算は出来るようにする方法がユーザー定義の「0」を「円」に変えれば出来たと思うのですが、上手くいきません・・。 解りにくい説明で申し訳ありません; 初心者なので詳しく説明していただけるとありがたいです、おねがいします。

  • EXCEL VBA ユーザー定義関数について。

    EXCEL VBA ユーザー定義関数について。 例) FUNCTION Test(a as integer, b as integer,c as integer) as integer とした場合、に添付図のような   =Test(数値1, 数値2, 数値3) のような説明は表示できないのでしょうか? ご存知の方よろしくお願いします。

  • エクセル書式のユーザー定義

    エクセルの書式のユーザー定義は例えば0.00であれば数値で小数点以下を2桁に設定したものと全く同じなのでしょうか?ユーザー定義とは数値や日付などの書式設定を更にユーザー好みにしたい時に使うものという認識でよいのでしょうか。

  • Excelのユーザー定義で

    いつも大変参考にさせていただいております Excelのユーザー定義で聞きたいことがあります A1セル は 文字を入力できる B1セル は IF(A1="","",A1) という数式を入れています B1セルには ”個”という単位を表示させたいため、ユーザー定義を利用したいと思っています ただ、私の方法では A1セル が空白でも B1セル には”個”と表示されるため、A1セル空白の際は B1セルも空白にしたいと思っています。 良い方法はありますでしょうか。 ご教授頂けますと幸いです。

  • エクセル2007のユーザー定義について教えてください。

    エクセル2007のユーザー定義について教えてください。 A1のセルにX001のようなコードが入力されている場合,RIGHT関数を使って右端の1を抽出し,この1に「日目」などの文字を結合して「1日目」と表示したいですがセルのユーザー定義で可能でしょうか。=RIGHT(A1,1)&"日目"のようにやればできますが,セルのユーザー定義でやりたいと思っています。

  • Excel ユーザー定義について教えてください!!

    よろしくお願い致します!! Excel「セルの書式設定」→「<タブ>表示形式」→「ユーザー定義」に、新しく「種類」を追加し保存後終了しました。 同じ文書ではなく、新たにExcelを立ち上げると、追加したユーザー定義がありません。ユーザー定義とは、「追加したBookでのみ有効」なのでしょうか??? ご回答、どうかよろしくお願い致します。