エクセルでこんな事できますか?
並列したQ列 R列があり、
また、添付には表記されていませんが、
その隣にS列 T列があり、
Q列、S列は、「コード」という事で、
Q列は1,2,3,4,5,6,7,8,9,10
S列は11,12,13,14,15,16,17,18,19,20
です。
R列は、「材質」でQ列に対応し、添付ファイルのように10項目
T列も「材質」でS列に対応し、10項目あります。
R列 T列「材質」を見て Q37セルにコードを入力したく、
その時、ドロップダウンリストとして、R列、続けて、T列の項目を表示したいです。
データの入力規制「リスト」で、できそうかと思い、頑張っていたのですが、
うまくいかず困っています。
データの入力規制「リスト」にはこだわりませんが、
マクロはできるだけ使わず完成したく思います。
エクセル詳しいかたご教授よろしくお願いします。
No.13
- 回答日時:
No9です
回答の意味が通じている雰囲気はあまりなさそうですね。
やる価値があるのかどうかわかりませんが、以下は無理やりの実現方法の一例です。
ただし、まったくのブラックボックスになると思いますので、方法のみ。
1)対象シートのタブを右クリックして出るメニューから「コードの表示」を選択。
2)上記で表示される、コードのエディタ欄に以下のコードをコピペ。
以上で、ご希望のような動作になるものと思いますが、メンテも不可能となることでしょう。
(↓の1行目の対象範囲の文字列「Q36:Q40」を、実情に合わせて修正してください)
※ まず、実物ではなくテスト用のブックで試してみてください。
'--------- ここから --------
Const targetRange = "Q36:Q40" ' ←プルダウンの対象範囲
Dim flag As Boolean
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If flag Then Exit Sub
lText = ""
For c = 0 To 2 Step 2
For r = 0 To 9
lText = lText & "," & Range("R25").Offset(r, c).Value
Next r
Next c
lText = Mid(lText, 2, Len(lText))
With Range(targetRange).Validation
.Delete
.add Type:=xlValidateList, Formula1:=lText
End With
flag = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range(targetRange)) Is Nothing Then Exit Sub
v = Target(1).Value
For c = 0 To 2 Step 2
For r = 0 To 9
If v = Range("R25").Offset(r, c).Value Then
Target.Value = Range("R25").Offset(r, c - 1).Value
Exit Sub
End If
Next r
Next c
End Sub
'--------- ここまで --------
No.12
- 回答日時:
ここまでしてやるべきかどうかは疑問なのですが、こんなのはどうでしょうか。
右下の図を見て下さい。B2が選択された状態ですが、数式バーは、1となっています。これは、書式設定のユーザー定義で、「りんご」としているだけで、実際の値は1です。B3、B4セルも同じように設定しています。このB2:B4でリストを作成すると、上の図のようなリストが表示できます。
このリストから「りんご」を選択すると「1」が入ります。
No.11
- 回答日時:
そうですね。
前にも書きましたが入力規則のリストはあくまでも入力補助です。別セルにコードを出す方がいいと思います。
作業列でリストを作成するようにしたなら、VLOOKUP関数は調べましたか?
また、材質名の前にコードをつけて取り出す方法も書きましたが、それは試しましたか?
>実は、うまくいっていません、
何を試してどのようにうまくいかなかったかを書いていただかないと、回答側にはわかりません。
色々ためしてみたのですが、最終的に別セルにコードと材質を結合し、
リストには、その結合したリストを表示させ、
LEFT関数にて頭をとりだし、整数化して コードとする事にしました。
色々、ありがとうございました。
No.10
- 回答日時:
えっと、確認なんですがやりたいのはプルダウンリストでは文字列の材質(リンゴとか)だけど、それを選択すると同セルでデータがそれに対応するコードに変わる、ということですよね?
ではなく、文字列を選択したら別セルにコードが出る、ですか?
その点を明確にしていただけますか?
No.9
- 回答日時:
No5です
>表したい、、、に関しては、作業列を作成する事にしました
>Q37に 2を入れたい、、、に関しては、何とかならないものでしょうか?
作業列を作成するのなら、いっそのこと別シートにコードと材料の対応表(もちろん全部が縦列に並ぶもの)を作成してこれを「材料・コードのマスターデータ」にするというように発想を変えれば、全体を簡単にできる可能性があります。
(別シートと書きましたが、同じシート内でも良いです。作業列ではなくそちらがメインデータになります。)
質問者様がメインとお考えの(質問文にご提示の)表は、「入力のための表」と考えて、表示されているコードや材料はマスターデータを参照して表示する仕組みにしておきます。
ご質問のプルダウンも直接マスターデータを参照する形にすれば、「入力規則」で簡単に実現できることがお判りでしょう。
プルダウンの値からコードに変換するのも、マスターデータで検索すればLookup系の関数でそのまま求めることができます。
また、メンテナンスなどが必要な際には、必ずマスターデータの方を変更するようにすれば、きちんと全体に反映されるようになるはずです。
使い方も見た目も変わりませんけれど、別シート(または同じシート内)にデータ表を作成して発想をちょっと変えるだけで、ずいぶんと処理が簡単になると思いませんか?
No.8
- 回答日時:
出来ないのは 言いませんが、
作業列を 持ちいず、
式のみで、
複数リストの、
結合を 試みる事は、
エクセルにおける、
最高難易度の 一つと、
思います。
敢えて、求めますか?
No.7ベストアンサー
- 回答日時:
あー…
入力規則はあくまでも、データ入力を補助するための機能ですからリストと違う文字を反映させることはできませんよ。
例えばリストデータは、01りんご・02プリンのように作って置いて、コードを出す時に
=LEFT(Q37,2)*1
と入れておくとか?
No.5
- 回答日時:
こんにちは
>データの入力規制「リスト」で、できそうかと思い~~
直接そのままでやろうとすれば、「リストは1行又は1列でなければダメ」と叱られると思います。
無理やりやるのであれば、どこかの空いている列を作業列として1列に連結しておけば良いでしょう。
二重データにしたくなければ、作業列側を関数での参照にしておくことで、元のデータを変更しても自動で整合が取れるようにすることは可能です。
とは言うものの、普通に想定されるデータ構造ではないので、その材料からコードを求めるのも、単純に関数で一発というわけにはいかなくなりますね。(それほど、大したことにはなりませんが)
他にも、いろいろと関数で処理したりしようとすると、常にその部分がネックになって、関数式が面倒なることが予想されます。
そうなのです。リストをつかい、色々、関数をつかい、、で、試してみたのですが、色々、制約、制限が発生してうまくいきません。入力において、おおちゃくをしようとして、なお、難解になったといった雰囲気です。
No.4
- 回答日時:
>諸所の事情により、2つにわけた
レイアウトの問題なら、別の場所に1列に入れてそれをリストにすればいいのでは?
コードも並べて2列で作っておけばVLOOKUP関数などでできますよね?
離れた場所に入れるとか非表示にするとかすればいいかと。
見えている範囲でしかリストを作ってはいけない訳ではありません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) excelにおける転記マクロの書き方 2 2023/05/12 03:16
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) 別シートの表の値を参照したい 2 2022/03/30 15:11
- Excel(エクセル) [オートフィルター]機能について 3 2023/02/04 14:32
- Visual Basic(VBA) エクセルVBAについて 2 2023/01/31 16:21
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) VBAで、1つのエクセルで、2つのシートからもう1つのシートに条件のある転記コードを教えてください。 1 2023/03/16 18:07
- Excel(エクセル) ExcelVBAでリストの項目に必要数と同じ手配数を分配していくマクロを作りたいです。 1 2022/07/29 18:36
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
オートフィルタ後のデータから...
-
エクセルで行の高さ及び列幅の...
-
矩形範囲の複数列を縦1列に並...
-
急ぎ!色のついたセルを非表示...
-
Excelで並び替え後にア行...
-
文字列を比較し、相違するフォ...
-
複数回答のクロス集計の方法
-
エクセル VBA 行間隔を飛ばした...
-
検索条件に合うセルの個数を数...
-
Excelで複数列のデータを1列に...
-
マクロで行の高さを設定したい
-
EXCELで日付を比べ3か月以内の...
-
プルダウンに【なし、平均、デ...
-
エクセルのマクロで別のシート...
-
エクセルの時刻のカウントが出...
-
平均変化率の信頼区間
-
エクセル 複数行ある同一商品...
-
エクセルの集計方法を教えて下さい
-
エクセル関数のSUMPRODUCTにつ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel2017 フィルタ昇順並びがA...
-
Excelで並び替え後にア行...
-
エクセルで行の高さ及び列幅の...
-
平均変化率の信頼区間
-
急ぎ!色のついたセルを非表示...
-
オートフィルタ後のデータから...
-
【Excel VBA】指定した行の最大...
-
エクセルの時刻のカウントが出...
-
基準日以前のデータを範囲を指...
-
EXCELで日付を比べ3か月以内の...
-
マクロで行の高さを設定したい
-
エクセル関数について
-
文字列を比較し、相違するフォ...
-
エクセル関数について
-
excel / ピポッド 日数を出したい
-
エクセル VBA 行間隔を飛ばした...
-
時間の重複チェック
-
プルダウンに【なし、平均、デ...
-
EXCEL 最終行のデータを他のセ...
-
列と行の名前(重複あり)が交...
おすすめ情報
わかりにくい内容ですみません。
本当は、20品目 縦に並べたかったのですが、
諸所の事情により、2つにわけた、、、でわかりますか?
それでも、ドロップダウンリストには、20品目表示したいといった事なのですが、、、
それで、ドロップダウンリストの20品目から品物を選んで、
Q37セルには、その品目に対するコード(数字)を入れたい
という事ですが、わかりますか?
2列に わたる、
リストを、
プルダウンで 全て、
表したい、、、その通りです。
例えば、
プルダウンで ブリンを、
選べば、
Q37に 2を、
入れたい、、、その通りです。
Q36から続く「選択コード」に入る入力値は、整数で、
別のシートで、整数を使った 計算式 関数に使います。
なぜ、こんな事をしたいかというと、
「材質」を参照して、Q36から続く選択コードの列には、対応するコード(整数)を入力するのだけど、
ふだん、34行から上の行は、表示されておらず、
その上、この選択コードが、最大で500行程あり、
記憶だけだと、入力間違いの恐れがあり、
こんなことできたらな~と思った次第です。
2列に わたる、
リストを、
プルダウンで 全て、
表したい、、、に関しては、作業列を作成する事にしました。
例えば、
プルダウンで ブリンを、
選べば、
Q37に 2を、
入れたい、、、に関しては、何とかならないものでしょうか?
今回の質問においては、プルダウンリストでは文字列の材質(リンゴとか)だけど、それを選択すると同セルでデータがそれに対応するコードに変わる、、、です。
、、、で、各々の先生の回答を拝見させて頂き、無理かも、、、と思い出して、
文字列を選択したら別セルにコードが出る、、、も挑戦していますが、
実は、うまくいっていません、です。
質問の範囲から外れてすみません、お言葉にあまえ、
何を試してかというと、
VLOOKUP リストダウンした項目から、文字列から、コードの選択、
また、 材料名の前にコードをつけても、一応試しています。
、、、が、
VLOOKUP LOOkUPによる、文字列からコードを選択は、
リストの作成事情から、
やはり、どうもしっくりきません。(できないわけではないが、使い勝手がわるい)
また、材料名の前にコードをつけるは、確かにできますが、
全体の使い勝手から、すみませんが、採用できませんでした。
結局、無いものねだりみたいになるのですが、
要は、材料をチョイスして、コードを入力が目的で、
その際、間違いが無いように入力する際に材料のリストを表示したいだけなのですが、、、
どのような方法がよいかの方針が見つからず、うまくいっていません。