『入力規則のリストをセルと異なる文字で表記したい』(初心者エル)
入力規則のリストをリスト用のセルと異なる文字で表記したいのですが
上手くいきません。もし方法があればご教示いただけますと幸いです。
入力規則のリストを、セルを参照して作成しており、
リスト内の「A-A」というデータを選択した時に
選択リストとしては「A-ALINE」と見えるようにしたいです。
リスト用のセルにユーザー定義を設定しましたが表示されませんでした。
別の方法はありますでしょうか。
< 使用 Excel:Excel2016、使用 OS:Windows10 >
(通りすがり) 2024/02/16(金) 15:47:06
返信ありがとうございます。
それはユーザー定義に「@"LINE"」と入れる方法でしょうか?
こちらだと表示されませんでした。
(初心者エル) 2024/02/16(金) 16:06:32
(通りすがり) 2024/02/16(金) 16:24:36
>選択リストとしては「A-ALINE」と見えるようにしたいです。 >入力するセルにユーザー定義でできるでしょ。
話が食い違っていませんか? 質問は、入力規則のリストに"LINE"付加ですよ。
(半平太) 2024/02/16(金) 16:41:33
(通りすがり) 2024/02/16(金) 17:26:11
解決策は分からないですが、動機を教えて貰っていいですか。
「入力規則のリストの参照先セル範囲」 と異なるものを、ドロップダウンリストに表示させ、 実際にセルに入力したいものは何なんですか? 参照先セル範囲の文字列そのものなんですか? なぜそのようなことが求められているんでしょうか。
どうしてもということなら、普通に、元の参照先セル範囲にLINEを追加しておいて入力させ、 それを参照して本来のLINEを除いた文字列を求める別のセルを作ったらいかがですか。 つまりワンクッション置くということです。 (xyz) 2024/02/17(土) 09:56:56
確認1 >リスト用のセルにユーザー定義を設定しましたが表示されませんでした。 最初、単にリスト用のデータ側だけで設定したためかと思ったのですが 入力規則の設定してあるセルにもユーザー定義を設定してあるのですよね? 確認2 >選択リストとしては「A-ALINE」と見えるようにしたいです。 入力規則を選択後ではなく、選択時にそう見えるようにしたいということでしょうか? その場合、参照式の入っているセル範囲を入力規則に設定すると2019ではそう見えます。 どこか空いている列(または別シート)で=でリストデータを単純に参照するように しておいてそれを入力規則のリストの元の値に入れてみてください。 元々のデータは書式設定する必要はありませんが、 参照式をいれた範囲と入力規則を設定したセル(または範囲)には ユーザー定義で@"LINE"とする必要があります。
一般的には、最初からA-ALINEにしておくと思うのですが へぇ〜と思ったのであげておきます。バージョンによって違うかもしれませんが。。。
(檸檬) 2024/02/18(日) 15:47:30
皆様、ご回答いただきありがとうございます。
返信が遅くなり申し訳ありません。
仮名称が伝わりにく設定であった為、変更してお話しします。
LINE→ラインにします。
経緯をお話ししますと
システムへ登録する際に使用するファイルを作成しており
システム上は「A-A」である必要があります。(半角3字までの制限あり。)
しかし、ファイル使用者には「A-Aライン」ではないと判別が付かないという点があります。
こちらは仮名称なので、伝わりにくいのですが
選択リストには「A-A」以外にも「C-B」や「D-C」もあると仮定し、
後の名称は「ライン」以外にも「エリア」「グループ」等があります。
選択リストの見える形として「A-Aライン」「C-Bエリア」「D-Cグループ」等で表示し
選択したら、「A-A」「C-B」「D-C」と入力されるようにしたいです。
(元の文字も、表示される文字も可変します。)
伝わりにくい表現で申し訳ありません。
何か良い方法があればご教示・ヒントをいただけますと幸いです。
(初心者エル) 2024/02/21(水) 10:25:24
A-Aライン → A-A への文字列の変換を入力時にしようとしているのが難しいわけで。
A-Aライン と入力させておいて、システムに送る前のどこかのタイミングで変換するとして、 変換すること自体は、変換テーブルを作っておけばVLOOKUP関数を使うなど、 難しいことではないのですが、
じゃ、いつやるかというと、その当たりの説明がないので、だれも回答できないのです (´・ω・`) 2024/02/21(水) 11:02:36
A1にデータがあるとして、別セルには
=IFNA(IFS(A1="A-Aライン","A-A",A1="C-Bエリア","C-B",A1="D-Cグループ","D-C"),"")
または
=LEFT(A4,3)
と入力する。
システムには別セルの値を入力する。
(ゆたか) 2024/02/21(水) 11:07:51
=LEFT(A1,3)
# コピー元間違えました
(ゆたか) 2024/02/21(水) 11:09:50
仮に、その仕掛けが出来たとして、 ファイル使用者が「あれ、"A-Aライン"をクリックしたのに、"A-A"と出やがる」なんてクレーム言ってこないですか?
そんな心配がない程度には知性があるファイル使用者だとした場合。 選択リストを以下の様に作り「クリックは下の行にしてください」と指示したらどうですか?
A-Aライン A-A C-Bグループ C-B
それが駄目なら、VBAでChangeイベントを活用するかですかね。
(半平太) 2024/02/21(水) 11:43:47
その為、今回の場合は半平太様のおっしゃる通り
VBAを使用する他ないのかな…と思い少し作成しました。
入力シートのA1:A10へ入力した文字が
リストシートのA1:A20内にある文字と同じであれば
リストシートのB1:B20の文字へ置換する
___________________________________
Private Sub Worksheet_Change(ByVal Target As Range)
Sheets("入力").Range("A1:A10"). _
Replace What:=Sheets("リスト").Range("A1:A20"), _
Replacement:=Sheets("リスト").Range("B1:B20")
End Sub
___________________________________
上記のように書きましたが、リストA1の文字しか置換されませんでした。
質問が変わってしまいますが、もしよろしければ要因を教えていただければ幸いです。
よろしくお願いいたします。
(初心者エル) 2024/02/21(水) 14:52:58
こんな感じかな?
Private Sub Worksheet_Change(ByVal Target As Range) Dim pos Dim rInput As Range, rToSearch As Range, aCell As Range
Set rInput = Intersect(Target, Me.Range("A1:A10"))
If Not rInput Is Nothing Then Set rToSearch = Worksheets("リスト").Range("A1:B20")
Application.EnableEvents = False
For Each aCell In rInput pos = Application.Match(aCell, rToSearch.Columns("A"), 0)
If IsNumeric(pos) Then aCell = rToSearch(pos, 2).Value End If Next aCell
Application.EnableEvents = True End If End Sub
(半平太) 2024/02/21(水) 15:50:13
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.