人に聞けない痔の悩み、これでスッキリ >>

2つの異なるセルで「データの入力規則」を用いてそれぞれでプルダウンメニューが設定されているとします。一つ目のプルダウンのセルで「注文しない」と選んだ場合はもう一つのプルダウンメニューが連動してロックされる。また、一つ目のプルダウンのセルで「注文する」と選んだ場合はもう一つが連動してプルダウンの中からメニューを選択できるようにする。

と言うプルダウンを条件付でロックするか選択できるようにするか、マクロを利用せずに設定は可能でしょうか?もし不可能な場合はマクロ利用での設定方法を教えて頂けませんでしょうか。
よろしくお願いします。

A 回答 (4件)

No.3です。


A2セルの入力規則のリストの「元の値」に、「=Q4:Q6」と設定するとプルダウンに目的の商品名が表示されるようになります。
Q4:Q6セルに「注文する」とい名前を付けておくことにより、「=Q4:Q6」→「=注文する」と書き換えることが出来ます。
これをA1セルと連動させるため「=INDIRECT(A1)」とします。
    • good
    • 0
この回答へのお礼

ご丁寧に再び回答いただきまして本当にありがとうございます。
ですが、まだ解決できません。
> これをA1セルと連動させるため「=INDIRECT(A1)」とします。
これはA2セルの中への入力でしょうか?もしYESなら、セル中への入力と「データの入力規則」が同時に出来るでしょうか?これまでトライした間では「データの入力規則」を使うと、そのセルの中には何も入力できないです。

今までやった事
・A1を「注文する」か「注文しない」のプルダウンメニューにする。
・例えばQ3に「注文する」Q4に「カレー」Q5に「スパゲッティ」Q6に「サンドイッチ」と入力し、Q3~6を「選択範囲から名前を作成」してQ3を名前としておく。
◎ここでやりたいことが、もしA1が「注文する」の場合にA2がQ4~6のプルダウンメニューを表示するが、もしA1が「注文しない」だった場合は何も表示しないか、No.1さんの言われるとおりグレーに色付けをしようかと考えております。
しかしA2セルに「データの入力規則」を使ってどう設定したらよいかが理解出来ておりません。
「元の値(S):」で①Q4~6の範囲を選ぶのか、②「INDIRECT(A1)」と入力するのか、どちらかしか出来ないように思っております。両方やってみましたが言われたようには動いてくれておりません。

もう少し色々探してがんばって見ますが、もしお時間ありましたらもう少しお知恵を頂けるとうれしいです。

お礼日時:2018/10/29 02:08

二つ目のプルダウンのリスト表示を一つ目のプルダウンに連動させる代表的なやり方はご存知ですか?手順としては次のようになります。


①A1セルに入力規則で「注文する」「注文しない」のプルダウンリストを設定します。
②適当なセルに、商品名を並べて、その範囲に「注文する」の名前を付けます(「注文しない」は作らない)。
③A2セルの入力規則で、=INDIRECT(A1) と設定します。

これで、A1セルで「注文しない」を選択するとA2セルのリストは表示されなくなります。
ただ、問題が無いわけではありません。例えば「注文する」で商品を選んだ後に、「注文しない」を選択し直した場合、A2セルには商品名が入ったままになってしまいます。「注文しない」と連動して商品名を消すことは、VBAを使わないと出来ないと思います(わたしの実力では・・・)。
    • good
    • 1
この回答へのお礼

ありがとう

問題点まで含めて教えて頂きまして、大変うれしいです。
ですが、②の意味がまだ理解できておらず解決はされていません。
②:適当なセルQ3に「注文する」Q4に「カレー」Q5に「スパゲッティ」Q6に「サンドイッチ」としてみましたが、それらQ3~6がA2へと反映されていません。A1ともA2とも全く関係ない場所に記載したので当然とも思えます。
②の意味はカレーもスパゲッティーもサンドイッチも同じ一つのセル(例えばQ8)に、「注文する」とも併せて入力しておくのでしょうか。また入力制限でプルダウンにしておく?そのQ8内の「注文する」、「カレー」、「スパゲッティ」、「サンドイッチ」がどうA2へと関連付けられるのでしょうか。

INDIRECTを解説するサイトを自分で探してもうちょっと試してみます。ですがもしこれをお読みになったらお助け頂けましたらうれしいです。
ひとまずありがとうございました。

お礼日時:2018/10/28 02:24

こんにちは!



ちょっと無理やりって感じになりますが・・・
VBAでの一例です。
A・B列が入力規則のリスト設定がしてあり、B列がA列に連動しているとします。

シートモジュールです

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 With Target
  If .Column = 2 And .Count = 1 Then
   If .Offset(, -1) = "注文しない" Then
    MsgBox "このセルは選択できません。"
    .Offset(, -1).Select
   End If
  End If
 End With
End Sub

これでA列が「注文しない」の場合、B列は選択できません。m(_ _)m
    • good
    • 1

一般機能の範囲ではできないと思いますよ。



例えば、片方で「注文しない」を選択したらもう片方はグレーに色がつくように条件付き書式で設定するというのでは如何でしょうか?
    • good
    • 1
この回答へのお礼

ご回答ありがとうございました。今四苦八苦しております。
グレー着色は名案です。設定してみます!
ありがとうございました。

お礼日時:2018/10/29 02:09

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aと関連する良く見られている質問

Qエクセルの時間計算について

エクセルで時間計算を行いたいと思っています。
具体的には、総時間と開始時間を入れると、ある特定の時間(休憩時間)を考慮して終了時間を自動算出するというものです。
なるべく関数でやりたいと思っています。


総時間 開始時間 終了時間 
180    13:30 16:40 (下記③の休憩時間を総時間に追加)
540    8:30 19:50 (下記①、②、③、④の休憩時間を総時間に追加)
60    11:00 12:00 (休憩時間追加無し)
300    23:00  4:20 (下記⑥の休憩時間を総時間に追加)


休憩時間
①10:30~10:40
②12:00~13:00
③15:30~15:40
④17:30~18:30
⑤22:00~23:00
⑥2:30~2:50
⑦5:30~6:00

Aベストアンサー

No7です。
>時刻表示に関しては特にこだわりはありませんので、アドバイス頂きました内容でも大丈夫です。
>マクロが簡単になるとの事ですが、№5のマクロから更に簡単に出来るという事でしょうか?

もし、時刻表示を25:00のようにしても問題ないなら、マクロは以下のようになります。
前回のは破棄してください。
又、8時前の開始にも対応しています。(添付図の赤線で囲んだところ)
(添付図の青線は従来の24時を超えたときの休憩開始時刻です)
添付図の例では
C2へ
=EndTime(A2,B2,$E$2:$F$10)
と入力し、オートフィルで下へコピーしています。(休憩時間テーブルの範囲が2行増えています)
-------------------------------------------------------------------
Option Explicit
'TTime:総時間(単位:分)
'STime:開始時間(HH:MM形式)
'TTable:休憩時間テーブルの範囲(開始時間の先頭セル:終了時間の最後のセル)
'上記の情報から終了時間(HH:MM)を算出する
'終了時間=開始時間+総時間+休憩時間テーブルの該当休憩時間の和
Public Function EndTime(ByVal TTime As Variant, ByVal STime As Variant, ByRef TTable As Range) As Variant
Dim i As Long
Dim etime As Variant
Application.Volatile
EndTime = ""
'総時間と開始時刻が空白なら、終了時間は空白
If TTime = "" And STime = "" Then Exit Function
EndTime = CVErr(xlErrValue)
'総時間と開始時刻の何れかが空白なら、終了時間は#VALUE
If TTime = "" Or STime = "" Then Exit Function
'総時間と開始時刻の何れかが不正なら、終了時間は#VALUE
If IsNumeric(TTime) = False Or IsNumeric(STime) = False Then Exit Function
'休憩時間テーブルが2列でないなら、終了時間は#VALUE
If TTable.Columns.Count <> 2 Then Exit Function
etime = STime + (TTime / 1440)
For i = 1 To TTable.Rows.Count
If TTable.Cells(i, 1).Value > STime And TTable.Cells(i, 1).Value < etime Then
'開始時間<休憩開始時間かつ休憩開始時間<終了時間なら、休憩時間を終了時間に加算
etime = etime + (TTable.Cells(i, 2).Value - TTable.Cells(i, 1).Value)
End If
Next
EndTime = etime
End Function

No7です。
>時刻表示に関しては特にこだわりはありませんので、アドバイス頂きました内容でも大丈夫です。
>マクロが簡単になるとの事ですが、№5のマクロから更に簡単に出来るという事でしょうか?

もし、時刻表示を25:00のようにしても問題ないなら、マクロは以下のようになります。
前回のは破棄してください。
又、8時前の開始にも対応しています。(添付図の赤線で囲んだところ)
(添付図の青線は従来の24時を超えたときの休憩開始時刻です)
添付図の例では
C2へ
=EndTime(A2,B2,$E$2:$F$10)
と入力し、...続きを読む

QSUBTOTALとSUMIFの組み合わせについて

下記の関数にSUBTOTALの関数を組みわせるにはどうすればいいでしょうか。
わかる方がいれば教えてくださいませ。
他の方のを見てもわかりませんでした。。。
=SUMIFS(Sheet1!$O:$O,Sheet1!$D:$D,"*"&$A4&"*",Sheet1!$H:$H,"*"&D$3&"*")

Aベストアンサー

No.2です。

>シート2のA列には行ごとに検索したいワードがあり、
>それぞれSUMIF関数でそれぞれの数値の合計を割り出しています。

>この関数にさらにシート1にフィルタを掛けたときに
>表示分だけを計算するようにしたいのですが難しいでしょうか。

結局Sheet2のA列(検索ワード)の行それぞれにSUMIF関数で集計結果がすでにあるわけですね。
それをSheet1にフィルタを掛けると表示されているデータのみの集計に変更したい!
というコトでしょうか?

もし同じセルでそのような操作をしたい!というのであれば関数では無理だと思います。
VBAであれば可能ですが、Sheet2に入っている数式も消えてしまいます。

別の列に表示するのであれば可能です。
ただこの場合もVBAになってしまいますかね。m(_ _)m

QExcelで表と文書の作成について

Excelが苦手で、計算を必要としない表と文書の作成をWordでしています。Wordは白紙状態から作成できますが、Excelはセルがあり文書もセルがあると入力が手間に感じます。Excelでスムーズに作成できる方法を教えていただきたいです。

Aベストアンサー

エクセルにテキストボックスのようにワード文書を置くことができます。
テキストボックスでは大したことはできませんが、これならワードの機能が使えます。

◆手順
1.メニュー → 挿入 → オブジェクト で、別のウインドウが開く 
2.『新規文書』タブ(選択されているはず) → 『Microsoft Office Word 文書』をクリック → OK
3.編集する
4.一旦、別のセルなどを選択した場合は、ボックスをダブルクリックで編集モードになります。

Qエクセル 計算式のコピー

例えば、
A1 とB1、A2とB2に数字が入ってるとして
C1にA1とB1をかけたものを入れた場合

このC1をC2にドラッグコピーするとA2とB2をかけたものの解が表示されますよね?

ところができないんですよ。
C2にA1とB1をかけたもの、つまりC1と同じものが張り付けられてしまうんです。
ずーっとドラッグコピーを下にしていってもC3もC4もC1の値が張り付けられてしまいます。

新規ファイルを開いてやってみるとできるんですが
保存ファイルを引っ張り出してこれをするとできないんです。

なにが違っているのでしょう?

Aベストアンサー

そのブックの計算方法が手動になっているのでは?
F9を押したら結果がきちんと表示されるなら
数式→計算方法の設定で自動に変えてください。

Qvlookupにて、返した値をさらに、他の文字列に変換するには

タイトルの件、質問します。

下記画像をご覧ください。
B2には、次の式が挿入されています。 =VLOOKUP(A2,$D$2:$E$6,2,FALSE)
B3には、              =VLOOKUP(A3,$D$2:$E$6,2,FALSE)

B2の501をさらに、【五】に変換
VLOOKにて値【101や201】を返した後に、さらに、101を一、201を二
501を五 というように、任意の文字列に変換をするにはどすれば良いでしょうか?

宜しくお願いします。

Aベストアンサー

ちなみに、表示形式でやる場合C2に
=INT(B2/100)
→表示形式をユーザー定義で「[DBNum1]」にする。

TEXT関数なら
=TEXT(INT(B2/100),"[DBNum1]")

Qエクセル関数について、質問です

次のような連続するエクセルデータに対して以下の処理を関数にて実行させたいと思っています。

【データ】

行1  中野区 ***
 2  
3  東京
4  台東区 ▽▽▽
5  大田区 〇〇〇
6  江戸川区 ▼▼▼
7  荒川区 △△△
8  港区 ■■■
9  品川区 ◇◇◇

 ・
 ・
 20 八王子市 ΨΨΨ
 21
 22  東京
 23  立川市 ◆◆◆
 24  武蔵野市 ×××
 25  三鷹市 」」」
 26  青梅市 「「「
 27  府中市 (((
 28  昭島市 )))
 ・
 ・
 ・


【処理】
「東京」で検索して、「東京」を起点とした「上へ2行目」と「下へ1~6行」を取り出したい
また、「東京」というワードはこの行に複数あり(1000個ほど)、それぞれの「東京」で
同様の処理を行っていきたいです
処理結果はG列に表示できればいいです。(ちなみに、地名が記載しているのはA列で***などの記号がB列となります)

【処理後のイメージ】

中野区 ***

台東区 ▽▽▽
大田区 〇〇〇
江戸川区 ▼▼▼
荒川区 △△△
港区 ■■■
品川区 ◇◇◇

八王子市 ΨΨΨ

立川市 ◆◆◆
武蔵野市 ×××
三鷹市 」」」
青梅市 「「「
府中市 (((
昭島市 )))

ちょっと、分かりづらいかもしれませんが
ご回答いただけたらと思います。

次のような連続するエクセルデータに対して以下の処理を関数にて実行させたいと思っています。

【データ】

行1  中野区 ***
 2  
3  東京
4  台東区 ▽▽▽
5  大田区 〇〇〇
6  江戸川区 ▼▼▼
7  荒川区 △△△
8  港区 ■■■
9  品川区 ◇◇◇

 ・
 ・
 20 八王子市 ΨΨΨ
 21
 22  東京
 23  立川市 ◆◆◆
 24  武蔵野市 ×××
 25  三鷹市 」」」
 26  青梅市 「「「
 27  府中市 (((
 28  昭島市 )))
 ・
 ・
...続きを読む

Aベストアンサー

『「東京」を起点とした「上へ2行目」と「下へ1~6行」』を読み替えると次の条件のいずれかが満たされ行を対象にすれば良いことがわかると思います。

・2行下のA列が”東京”である
・6行上~1行上までのA列に”東京”が含まれる。

上記を数式化して、対象と判断された行をオートフィルタで抽出するのが、一番簡単かと思います。

QExcelにて引き算の質問

Excelで

横並びに並んだ数字で
左端、又は0の隣の数字から引き算をする ような関数はありますか?

画像で言うと

E5セルに 5 が入力されたら

➀B4セル 1 から引き算。
その結果B4セルの値を 0 と表示したい 余りが4
(E5セル 5 - B4セル 1 =4)

②C2セル 2 と E5セル - B4セルの余り4を引き算。
C2セルの値を 0 余りが2
(➀の計算結果 4 - C2セル 2 = 2)

次にD3セル 3 と先ほどの余り2 と引き算
D3セルの値は 1 が残る。
(②の計算結果 2 - D3セル 3 = -1)

ここで結果がマイナスになるのですが、
D3セルには 1 と表示する。

次またE列に値が入力された場合は D3セルの1 から引き算をスタートし
上のように計算を繰り返し…

分かりづらい説明で申し訳ございません。

分かる方よろしくお願いいたします。

Aベストアンサー

在庫確認という事を考慮して、こんなことがしたかったのかな?
どうかしら?

Q文字のみ抽出

”長谷川731” ”鈴木1192” の様に、文字と数字が合体した文字列で
文字の部分の”長谷川” ”鈴木” を抽出する関数を教えてください。
エクセルのバージョンは2010ですので、入れ子は5個までしか使えません。

Aベストアンサー

=LEFT(A1,MIN(FIND({1,2,3,4,5,6,7,8,9,0},A1&1234567890))-1)

QExcel 2つの日時の差の計算がおかしいんです

こんにちは。

セル2つに例えば
A:2018/10/17 21:37
B:2018/10/18 21:46
と入力し
計算式でB-A、書式設定をd"日" h:mmにすると正しく○日XX:XXと経過日時が表示されます。
(この場合は1日0:09)

しかし
A:2018/9/17 21:12
B:2018/10/21 8:15
で同じセルがなぜか「2日11:03」と表示されます。これは1ヶ月が経過していることが原因のようにも思います。

何か良い回避策、修正案あれば教えていただけると嬉しいですm(__)m

Aベストアンサー

こんにちは!

セルの表示形式だけでは難しいみたいですね。
苦肉の策ですが・・・

1行目は項目行で2行目以降にデータがあるとします。
=INT(B2-A2)&"日"&TEXT(B2-A2,"h:mm")

としてみてはどうでしょうか?

※ 結果は文字列になりますので、計算には使用できません。
集計など計算データとして必要なのであればどこか使っていない列に
=B2-A2

としておきそれを利用するのはどうでしょうか?m(_ _)m

QMAX関数で文字も認識してしまうのはなぜですか?

エクセルでA列の42~65574行まで日付が記入してあります。

F列からFWY列まで1行目から41行目まで、顧客Noや氏名など記入してあります。

42行目から65574行目までは、来店日付にお支払頂いた金額が入力してあります。

41行目には下記の数式が書いて有り、最終の来店日が分かる様になっています。

=IF(COUNT(F52:F65574)=0,"来店無し",MAX(IF(F42:F65574>0,$A$42:$A$65574)))

MAX関数では数字しか認識しないと思っていたのですが、文字でも入力してあるとその日が最後の来店日と返して来ます。

数字が入っている日付だけ返すようにしたいのですが、どうしてよいのか分かりません。

ご回答よろしくお願いいたします。

Aベストアンサー

こんばんは。

F42:F65574>0 だったら、文字も含まりますね。
文字列は、どんな数字よりも、大きいからです。

=IF(COUNT(F42:F65574)=0,"来店なし",MAX(INDEX(ISNUMBER(F42:F65574)*A42:A65574,,)))

なお、IF(COUNT(F52:F65574)=0 は、後の範囲と合わせました。

配列の確定は不要です。そのまま入力すればよいです。

あまり、私は、得意とはしませんが、こんなのはどうでしょうか。


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング