入力規則(リスト)に関するツリー



   Excel:入力規則について [疑問] - ma2chin - 2004/01/27(Tue) 02:56 [No.491]
Re: Excel:入力規則について [意見] - 田中亨 - 2004/01/27(Tue) 05:24 [No.492]
Re: Excel:入力規則について [意見] - ma2chin - 2004/01/27(Tue) 07:39 [No.493]
Re: Excel:入力規則について(入力規則の二重チェック... [意見] - ma2chin - 2004/01/27(Tue) 12:05 [No.494]
Re: Excel:入力規則について(入力規則の二重チェック... [意見] - れいぞー - 2004/01/27(Tue) 14:14 [No.496]
私だけの現象ですね^^; [意見] - ma2chin - 2004/01/27(Tue) 15:55 [No.498]
Re: 私だけの現象ですね^^; [意見] - れいぞー - 2004/01/27(Tue) 17:49 [No.499]
Re: 私だけの現象ですね^^; [意見] - けんぞう - 2004/01/27(Tue) 20:13 [No.501]
Re: 私だけの現象ですね^^; [意見] - ma2chin - 2004/01/28(Wed) 02:14 [No.502]
Re: 私だけの現象ですね^^; [意見] - れいぞー - 2004/01/28(Wed) 12:43 [No.503]
Re: 私だけの現象ですね^^; [意見] - れいぞー - 2004/01/28(Wed) 13:38 [No.504]
名前の定義については解決! ワークシート分析は? [解決!] - ma2chin - 2004/01/28(Wed) 14:58 [No.506]
しつこい・・(笑) [意見] - れいぞー - 2004/01/28(Wed) 14:53 [No.505]
試してみます! [意見] - ma2chin - 2004/01/28(Wed) 15:02 [No.507]
Re: 試してみます! [意見] - れいぞー - 2004/01/28(Wed) 15:05 [No.508]
Re: 試してみます! [意見] - ma2chin - 2004/01/28(Wed) 16:58 [No.509]
Excel:入力規則について2「ワークシート分析」 [発見] - ma2chin - 2004/01/28(Wed) 21:12 [No.510]



※このページは閲覧のみとなっています。返信はできません。
Excel:入力規則について [疑問] - ma2chin

皆様こんばんは!

最近エクセル使う時間が増えて、なんでかな〜?って思ってること沢山あるんですよ・・(^^ゞ
エクセルQ&A掲示板に行けばいいのかもしれませんが、私には敷居が高くって・・。

この機能ってどうなの?にタイムリーな記事が載ってるではありませんか♪
ということで便乗でこちらで質問させて頂きます。宜しくお願いします。

入力規則に名前を使う方法で、入力リストがどんどん増えると、その度に名前の定義を更新しなくていい方法というのを、どこかのQ&Aで見つけて、『おっ!これは便利♪』と思って使ってみたのですが、リスト以外の文字が入力されてもエラー表示しなくなってしまったのです。

どんな方法を使ったかというと、
入力リスト−名前の定義の参照範囲に通常は、
=入力リスト!$B2:$B$15  などと入れるところを、
=OFFSET(入力リスト!$B$2,0,0,COUNTA(入力リスト!$B:$B),1)
としました。

そうすると、リストを追加すると、プルダウン表示もちゃんと追加されるのですが、リストに無い文字を入れてもエラーにならなくなってしまいました。
私の記述が間違ってるのでしょうか?

それとも、この方法は諦めて、絶対にこれ以上増えないだろうというくらいの範囲で名前の定義に設定しておくべきなのでしょうか・・。

はたまた、他に良い方法があれば・・教えてください。


[No.491] 2004/01/27(Tue) 02:56
Re: Excel:入力規則について (No.491 への返信) [意見] - 田中亨

>リストに無い文字を入れてもエラーにならなくなってしまいました。
>私の記述が間違ってるのでしょうか?

記述は間違っていませんよ(^_^)
実際に同じアドレスにデータを作成して試してみましたら、ちゃんと正しく動作しました。

[データの入力規則]ダイアログボックスの[エラーメッセージ]タブで、
[無効なデータが入力されたらエラーメッセージを表示する]チェックボックスがオンになっていますか?
また、下の[スタイル]も「停止」になっていますか?

まずは、↑これをご確認くださいな。


[No.492] 2004/01/27(Tue) 05:24
Re: Excel:入力規則について (No.492 への返信) [意見] - ma2chin

おはようございます。
早速レスがついていてびっくり。どうもありがとうございます。

> 実際に同じアドレスにデータを作成して試してみましたら、ちゃんと正しく動作しました。
田中さんの環境では、エラー表示も出たのですね?

> [データの入力規則]ダイアログボックスの[エラーメッセージ]タブで、
> [無効なデータが入力されたらエラーメッセージを表示する]チェックボックスがオンになっていますか?
> また、下の[スタイル]も「停止」になっていますか?

そうなんです。ここの設定はちゃんとなっているのですが・・・
会社Win98(Excel2000)と自宅XPマシン(Excel2002)で試しましたが同じくエラー表示しません。
他に考えられることありましたら、宜しくお願いします。


[No.493] 2004/01/27(Tue) 07:39
Re: Excel:入力規則について(入力規則の二重チェック) (No.493 への返信) [意見] - ma2chin

こんなの見つけました。

EXCEL生産性向上委員会 トラブル回避テクニック19.入力規則を過信するな!
http://www001.upp.so-net.ne.jp/excel/trouble19.htm

「別セルに配列数式設定してエラー表示させる方法」というのが参考になりました。

配列数式、ワークシート分析共に知らなかったので勉強になりました。
しかし、今度は、「無効データのマーク」というボタンをクリックしても赤○マークされない・・(>_<) なぜ??
それと、チェックしたい範囲が増えていく場合はどうするの?という疑問がまた新たに・・・(^_^;


[No.494] 2004/01/27(Tue) 12:05
Re: Excel:入力規則について(入力規則の二重チェック) (No.494 への返信) [意見] - れいぞー

こんにちは〜
レスではありません。
以下の環境で試しましたが
現象が再現できませんでした。
参考まで・・

Win98+Excel97
Win98+Excel2000
Win2000+Excel97
Win2000+Excel2000
Win2000+Excel2002
Win2000+Excel2003
WinXP+Excel2000
WinXP+Excel2002


[No.496] 2004/01/27(Tue) 14:14
私だけの現象ですね^^; (No.496 への返信) [意見] - ma2chin

れいぞうさん、チェックありがとうございます。

と、いうことは、私の環境設定の問題ですね・・^^;
むむむ・・(--;)


[No.498] 2004/01/27(Tue) 15:55
Re: 私だけの現象ですね^^; (No.498 への返信) [意見] - れいぞー

でも2つの環境で試しているので
PCの環境と考えるのはちと違うかも・・
ファイル見ましょうか?


[No.499] 2004/01/27(Tue) 17:49
Re: 私だけの現象ですね^^; (No.499 への返信) [意見] - けんぞう

あ、こういう方法があったんですね。
初めて知りました^^参考になります。

私は、定義されたものへデータを追加するとき、
データを必要セル分だけ移動させ行を空けておいて、
そこへ入れてました。
これで定義範囲も自動的に変わります。
連番ものは並べ替えをします。
VLOOKUPなどの範囲を定義した場合も使えます。
力技です(笑)
エラーチェック試してませんすみません^^;


[No.501] 2004/01/27(Tue) 20:13
Re: 私だけの現象ですね^^; (No.501 への返信) [意見] - ma2chin

自宅のWinXPでも、ワークシート分析の「無効データのマーク」ボタンの赤○表示がされませんでした(>_<;)

> でも2つの環境で試しているので
> PCの環境と考えるのはちと違うかも・・
> ファイル見ましょうか?
お言葉に甘えさせてもらっていいですか?
他にマクロも入れてるのでそれが原因かとも思ったのですが、
参考サイトと同じように別のブックで作ってみても駄目でした。
↓チェックして頂ける方、こちらにアップしましたので、宜しくお願いします。
http://jp.y42.briefcase.yahoo.co.jp/bc/ma2chin1226/vwp2?.tok=bc3QiPABmf09APtP&.dir=/excel&.dnm=filter.xls&.src=bc



> 私は、定義されたものへデータを追加するとき、
> データを必要セル分だけ移動させ行を空けておいて、
> そこへ入れてました。
> これで定義範囲も自動的に変わります。
> 連番ものは並べ替えをします。
> VLOOKUPなどの範囲を定義した場合も使えます。
> 力技です(笑)
そういう方法もあるんですね。ありがとうございます。

今回私の作りたいファイルは大勢の方が触るファイルになるので、
なるべく定義範囲は変更しなくていい方がいいかなと思ってます。

入力規則だけの部分なら、Accessでやれば簡単なのですが、
前レコードの値を参照して独自の連番を取得する式を設定しているのでExcelに手を出してみて・・ハマってます(^^ゞ

引き続き、良い案ありましたら、お願いします。


[No.502] 2004/01/28(Wed) 02:14
Re: 私だけの現象ですね^^; (No.502 への返信) [意見] - れいぞー

こんにちは。
今日は会議で・・(泣)

=OFFSET(入力リスト!$B$2,0,0,COUNTA(入力リスト!$B:$B),1)
だと範囲に空白セルを含むことになるので
=OFFSET(入力リスト!$B$2,0,0,COUNTA(入力リスト!$B:$B-1),1)
とすればちゃんと表示されると思います。

ワークシート分析のほうはまた見てみます。
またあとで♪


[No.503] 2004/01/28(Wed) 12:43
Re: 私だけの現象ですね^^; (No.503 への返信) [意見] - れいぞー

ふたたび♪
>赤丸表示されると思ったが、表示されない?
これ・・
僕の環境でもされませんよ(笑)
配列数式ってよくわからないんですが
これこそ諸刃の剣だとおもうんですが・・(笑)
式を見た人がうっかり編集モードに入っちゃって
そのままEnter押されたら終わりですよね・・・
よくわからないという理由を上記の理由にすりかえてみました(笑)
よって配列数式はまったく使ったことありません(笑)


あと、やけに再計算が重いな〜と思ったら
Calculateイベントの中でシートに値を入れていたんですね。
こうするとCalculateとChangeイベントのループになってしまうので
以下のように処理が済むまでイベントを停止してあげるといいですよ。

Application.EnableEvents = False
If ActiveSheet.FilterMode Then ' フィルタモードなら
FilterData 'フィルタのデータを取得して表題設定
Else 'フィルタモードでなかったら
Range("b2").Value = "文書番号発行台帳" 'デフォルトの表題設定
End If
Application.EnableEvents = True

赤丸は僕にはわかりません。
マクロでも組みましょうか?(笑)


[No.504] 2004/01/28(Wed) 13:38
しつこい・・(笑) (No.504 への返信) [意見] - れいぞー

組んでみました(笑)
かなり無理やりですが・・
データが何万もなければそれなりに動くと思います。
PV500MH192Mで1万データで2.3秒でした。

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim i, Mr As Range
Dim Myrange As Range, Myrange2 As Range
Dim end_r, end_r2
On Error Resume Next

end_r = Cells(Rows.Count, 2).End(xlUp).Row
'台帳B列の最終行

With Sheets("入力リスト")
end_r2 = .Cells(Rows.Count, 2).End(xlUp).Row
'入力リストの最終行
Set Myrange = .Range("B2:B" & end_r2)
End With

If Target.Address = "$A$1" And Target.Value = "文書名が不正です!" Then
Cancel = True
'ダブルクリック無効

Set Myrange2 = Range("B5:B" & end_r)

Range(Cells(2, 2), Cells(end_r, 2)).Interior.ColorIndex = xlNone
'色初期化


For Each Mr In Myrange2
If IsError(Application.Match(Mr.Value, Myrange, 0)) Then
'Match関数でエラーになったら色を塗る
Mr.Interior.ColorIndex = 3
End If
Next

End If

Set Myrange = Nothing
Set Myrange2 = Nothing

End Sub

あと仕事でよくやってるんですが
VBAから式を入れて値にするという方法なんですが
こうすると再計算が起こってもあちこちで再計算しなくて済むので
ファイルが軽くなるというメリットがあります(笑)
よろしければ・・

Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
'イベント停止
If Target.Column = 3 And Target.Row >= 5 And IsDate(Target.Value) Then
'変更されたセルの列C列で5行目以上で値が有効な日付として認識できれば、式を入れて即座に値に変換
Target.Offset(, -2).Formula = "=""(所 属)""&IF(MONTH(C19)>3,MID(YEAR(C19),3,2),MID(YEAR(C19)-1,3,2))&""-""&IF(C18=""発行日付"",""0001"",IF(IF(MONTH(C18)>3,MID(YEAR(C18),3,2),MID(YEAR(C18)-1,3,2))<>IF(MONTH(C19)>3,MID(YEAR(C19),3,2),MID(YEAR(C19)-1,3,2)),""0001"",TEXT(RIGHT(A18,3)+1,""0000"")))"
Target.Offset(, -2).Value = Target.Offset(, -2).Value
Else
Target.Offset(, -2) = ""
End If
Application.EnableEvents = True
'イベント復活
End Sub


[No.505] 2004/01/28(Wed) 14:53
名前の定義については解決! ワークシート分析は? (No.504 への返信) [解決!] - ma2chin

れいぞーさん、何度もありがとうございますm(__)m

> =OFFSET(入力リスト!$B$2,0,0,COUNTA(入力リスト!$B:$B),1)
> だと範囲に空白セルを含むことになるので
> =OFFSET(入力リスト!$B$2,0,0,COUNTA(入力リスト!$B:$B-1),1)
> とすればちゃんと表示されると思います。
できました!!
=OFFSET(入力リスト!$B$2,0,0,COUNTA(入力リスト!$B:$B)-1,1)
で空白セルを含まないように式を修正すると、間違ったデータを入れるとエラー表示するようになりました!
れいぞーさん、どうもありがとうございました♪

> >赤丸表示されると思ったが、表示されない?
> これ・・
> 僕の環境でもされませんよ(笑)
> 配列数式ってよくわからないんですが
> これこそ諸刃の剣だとおもうんですが・・(笑)
> 式を見た人がうっかり編集モードに入っちゃって
> そのままEnter押されたら終わりですよね・・・
> よくわからないという理由を上記の理由にすりかえてみました(笑)
> よって配列数式はまったく使ったことありません(笑)
あはは、確かにややこしいですね。
とりあえず二重チェック用の保険としては使えそうなので、このままやってみます。

> あと、やけに再計算が重いな〜と思ったら
> Calculateイベントの中でシートに値を入れていたんですね。
> こうするとCalculateとChangeイベントのループになってしまうので
> 以下のように処理が済むまでイベントを停止してあげるといいですよ。
そうなんです。。昨日気付いて、これも次の課題だ〜と思っていたとこでした。
今、Webから新たにダウンロードしてみたら、すごい重かったので更にびっくり。
れいぞーさんの言われた通りに修正したら、すっきりしました♪
どうもありがとうございました。
修正差し替えしてみました。
http://jp.y42.briefcase.yahoo.co.jp/bc/ma2chin1226/vwp2?.tok=bcvntPABxzG3fZVv&.dir=/excel&.dnm=filter.xls&.src=bc

> 赤丸は僕にはわかりません。
ワークシート分析についてる、Excelの機能の一部なんですよね。
他の式で表示できるかやってみたんですが、どうも表示されない。。
(エラーになる式を考えるのも難しいですが・・^^;)
これ、使ったことある方いたら教えて欲しいですね。

> マクロでも組みましょうか?(笑)
この先にも沢山壁がありそうです^^;
「こんなの欲しい」に上げちゃっていいですか?(笑)

ツリー長くなっちゃったし、入力規則の名前定義については解決しましたので、
一旦このツリーは解決とします。
どうもありがとうございました。

ワークシート分析について、別途ツリーあげたいと思います。
宜しくお願いします。


[No.506] 2004/01/28(Wed) 14:58
試してみます! (No.505 への返信) [意見] - ma2chin

> 組んでみました(笑)
私がレスを書いてるうちに・・凄いですね!

どうもありがとうございます!!
早速試してみますね♪


[No.507] 2004/01/28(Wed) 15:02
Re: 試してみます! (No.507 への返信) [意見] - れいぞー

こっちミスってました・・
これで↓
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Application.EnableEvents = False
'イベント停止
If Target.Column = 3 And Target.Row >= 5 And IsDate(Target.Value) Then
tr = Target.Row
'変更されたセルの列C列で5行目以上で値が有効な日付として認識できれば、式を入れて即座に値に変換
Target.Offset(, -2).Formula = "=""(所 属)""&IF(MONTH(C" & tr & ")>3,MID(YEAR(C" & tr & "),3,2),MID(YEAR(C" & tr & ")-1,3,2))&""-""&IF(C" & tr - 1 & "=""発行日付"",""0001"",IF(IF(MONTH(C" & tr - 1 & ")>3,MID(YEAR(C" & tr - 1 & "),3,2),MID(YEAR(C" & tr - 1 & ")-1,3,2))<>IF(MONTH(C" & tr & ")>3,MID(YEAR(C" & tr & "),3,2),MID(YEAR(C" & tr & "9)-1,3,2)),""0001"",TEXT(RIGHT(A" & tr - 1 & ",3)+1,""0000"")))"
Target.Offset(, -2).Value = Target.Offset(, -2).Value
Else
Target.Offset(, -2) = ""
End If
Application.EnableEvents = True
'イベント復活
End Sub


[No.508] 2004/01/28(Wed) 15:05
Re: 試してみます! (No.508 への返信) [意見] - ma2chin

どうも、ありがとうございます!

この数式をどう直したらうまく行くかなぁ・・と頭を悩ませていたとこでした・・(;^_^A

流石ですね♪


[No.509] 2004/01/28(Wed) 16:58
Excel:入力規則について2「ワークシート分析」 [発見] - ma2chin

入力規則について疑問を持って調べていくうちに、見つけたExcelの機能、「ワークシート分析」。
この機能はExcelならではのとても便利な機能ですね。
それなのに、なぜオプションで選択しないと表示しないという隠れた機能になっているのか・・とっても勿体無いです。

そして、ワークシート分析のツールボタンに付いている、「無効データのマーク」
このボタンの操作方法がいまいち理解できませんでした。
参考にしていたページは↓こちら。
「EXCEL生産性向上委員会 トラブル回避テクニック19」
http://www001.upp.so-net.ne.jp/excel/trouble19.htm



キーワード:「ワークシート分析 無効データのマーク」でグーグル検索してみました。
結果、約19件中、似たページを除くと15件。
思いがけなく少ないですね。
これなら、調べるにも時間が掛かりません。
で、赤丸表示させるやり方解りました^^

下記に、上位から順にランクされたページで、参考になったページ抜粋しました。

「WPC ARENA / 入力規則に無効なデータが入力される場合」
http://arena.nikkeibp.co.jp/tec/excel/gaz/256/
ここで、別セルを参照していた場合は、後から無効なデータが入力されてもエラーにならないということがわかりました。


「[データー]-[入力規則]」
http://www.1147mono.com/Excel/katsuyou_04.htm
入力規則のエラーメッセージ等の設定の仕方がわかりやすく書かれていました。


↓Q&Aのログですね。この手順が抜けていたために、赤○表示ができなかったという事が解りました!
「Subject: 入力できる値に制限をつけるには?」
http://keep-on.com/excelyou/2000lng5/200011/00110034.txt

 エラーメッセージは、セルにデータが直接入力された場合だけに表示され、
数式の計算結果、マクロによって入力されたデータ、貼り付けられたデータ、
および [フィル] コマンドで入力されたデータには表示されません。

 しかし、事後にチェックする方法があります。

1.A列を選択

2.メニュー[データ]-[入力規則]
→「選択範囲には、データの入力規則が設定されていないセルが含まれていま
す。データの入力規則をそれらのセルに適用しますか?」というメッセージが
表示される。

3.[はい]をクリック
→[データの入力規則]ダイアログボックスが表示される。

4.[OK]ボタンをクリック

5.メニュー[ツール]-[ワークシート分析]-[[ワークシート分析] ツールバーの
表示]

6.[無効データのマーク]をクリック

 これで、入力規則で設定した制限に合致しないセルに赤丸がつきます。
 なお、コピー&値貼り付けをしている場合には、上記手順の1.-4.は必要あ
りません。



「エクセル技道場−入力規則」
http://www2.odn.ne.jp/excel/waza/validation.html#SEC17
最後の方にランクされていた、このページに入力規則のノウハウが詰まってました!!
少し残念なのが、テキストばかりで説明されているので、ちょっと解り難いかな?
時間をみて、じっくり説明の手順を追ってやってみたいと思いました♪


他にも、こんな方法があるよ!と言う方は、是非教えてくださいね♪


[No.510] 2004/01/28(Wed) 21:12

前のページへ戻ります


2style.net