• ベストアンサー

Excel のデーター入力規則が別列でソート

Excelで A列に日付け B列に仕入れ先 C列にその仕入れ先の主な品名などをデーター入力規則で覚えさせていますが、 仕入れ日の都合及び仕入れ先伝票到着日の都合で最後の行に 追加記入、及び仕入れ先をサーチしてまとめて数件記入してから、A列の日付順にソートすると表面の書かれた文字はそのまま各行で並び替えされますが、 データー入力規則は記入した時の行に残ったままの様で次に仕入れ先のデーター入力規則をしようとすると違う表示になっています。 この場合日付をソートした場合その行の(隠れている入力規則)データーも一緒に移動できない物でしょうか? よろしくお願いいたします。

  • cyan3
  • お礼率70% (440/621)

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

  • ベストアンサー
  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.1

 データの入力規則自体を、データとともにソートする方法は存じませんが、全ての行に同じ入力規則を設定しておいた上で、各行ごとに異なった入力規則を設定した場合と同様に、入力可能なデータに制限を加える事が出来るという方法は如何でしょうか?  まず、表の直ぐ右側に隣接する列(ここでは仮にD列とします)を作業列として使用します。  そして、「B列のセルに入力規則を設定する予定ではなかった行」のD列のセルには、次の関数を入力(入力規則ではなく、セルに関数として入力)して下さい。 =TRUE()  又、例えば、「『-3~12の範囲の整数値のみを入力可能とする入力規則』を設定する予定だった行」のD列のセルには、次の関数を入力して下さい。 =ISNUMBER(1/ISNUMBER(INDEX($B:$B,ROW()))/(INT(INDEX($B:$B,ROW()))=INDEX($B:$B,ROW()))/(INDEX($B:$B,ROW())>=-3)/(INDEX($B:$B,ROW())<=12))  因みに、INDEX($B:$B,ROW())は、その関数が入力されているセルがある行と、同じ行のB列のセルを表す関数です。  又、例えば、「『-12.5~3.14の範囲の小数値のみを入力可能とする入力規則』を設定する予定だった行」のD列のセルには、次の関数を入力して下さい。 =ISNUMBER(1/ISNUMBER(INDEX($B:$B,ROW()))/(INDEX($B:$B,ROW())>=-12.5)/(INDEX($B:$B,ROW())<=3.14))  又、例えば、「『2012/12/25~2013/1/15の範囲の日付のみを入力可能とする入力規則』を設定かする予定だった行」のD列のセルには、次の関数を入力して下さい。 =ISNUMBER(1/DAY(INDEX($B:$B,ROW()))/(INDEX($B:$B,ROW())>="2012/12/25"+0)/(INDEX($B:$B,ROW())<="2013/1/15"+0))  又、例えば、「『文字数が1~12文字の文字列のみを入力可能とする入力規則』を設定する予定だった行」のD列のセルには、次の関数を入力して下さい。 =ISNUMBER(1/ISTEXT(INDEX($B:$B,ROW()))/(LEN(INDEX($B:$B,ROW()))>=1)/(LEN(INDEX($B:$B,ROW()))<=12))  又、例えば、「『"あ","い","う","え","お"の中の何れかの値のみを入力可能とする入力規則』を設定する予定だった行」のD列のセルには、次の関数を入力して下さい。(ドロップダウンリストは表示されません) =ISNUMBER(MATCH(INDEX($B:$B,ROW()),{"あ","い","う","え","お"},0))  又、例えば、「『[ユーザー設定]の数式で入力可能な値を決める入力規則』を設定する予定だった行」のD列のセルには、次の様な形式の関数を入力して下さい。 =ISNUMBER(1/(「元の入力規則のユーザー設定の数式欄に入力する予定だった判定式」))  次に、表中のB列の全てのセル(ソートの対象外となる行は除く)を選択してから、「データの入力規則」ダイアログボックスの[設定]タブにおいて「入力値の種類」欄を[ユーザー設定]とした上で、「数式」欄に次の数式を入力して下さい。 =INDEX($B:$B,ROW())  尚、もしも、「数式」欄にINDEX関数を入力する事が出来なかった場合には、例えば、入力規則を設定するために範囲選択しているセル範囲のなかで、最も上の行が2行目である場合には、 =INDEX($B:$B,ROW()) の代わりに、 =$D2 と入力して下さい。  これで入力可能な値を制限する様にした上で、特定の列基準で行の並べ替えを行った際にも、入力可能な値の制限条件が、データとともに移動する様にする事が出来ます。  只、このままでは表に隣接して作業列が表示されてしまい、見苦しくなりますので、D列のセルの書式設定の表示形式を ;;; に設定する事で、D列のセルを非表示にされると良いと思います。(下の添付画像では、解り易くするために、敢えてD列を非表示にはしておりません)  それと、この方法は、特定の列基準で行の並べ替えを行った際に、D列の関数も一緒に並べ替えられることに意味がありますので、例え見栄えを良くするためであっても、作業列を別のシート上に設ける訳にはいきません。  尚、上記の方法ではドロップダウンリストを設定する事は出来ませんが、もしも、全ての行に亘ってドロップダウンリストが必ず設定される場合には、各行毎に異なるドロップダウンリストが設定される様にした上であっても、データとともにドロップダウンリストに表示される内容も移動する様にする事が出来ます。  今仮に、B2セルのドロップダウンリストに表示させたい値の一覧が、Sheet2のA1~A5の範囲に入力されていて、 同様に、B3セルのドロップダウンリストに表示させたい値の一覧がSheet2のB1~B6に、 B4セルのドロップダウンリストに表示させたい値の一覧がSheet2のC1~C7に、 それぞれ入力されているものとします。  まず、例えば「B列のセルに『Sheet2のA1~A5の範囲に入力されている一覧の中から、選択出来る様にするドロップダウンリスト』を設定する予定だった行」のD列のセルには、次の文字列を入力して下さい。 Sheet2!A1:A5  又、例えば「B列のセルに『Sheet2のB1~B6の範囲に入力されている一覧の中から、選択出来る様にするドロップダウンリスト』を設定する予定だった行」のD列のセルには、次の文字列を入力して下さい。 Sheet2!B1:B6  又、例えば「B列のセルに『Sheet2のC1~C7の範囲に入力されている一覧の中から、選択出来る様にするドロップダウンリスト』を設定する予定だった行」のD列のセルには、次の文字列を入力して下さい。 Sheet2!C1:C7  そして、「B列のセルにドロップダウンリストを設定しない予定だった行」のD列のセルには、次の関数を入力して下さい。 =CELL("address",INDEX($B:$B,ROW()))  次に、表中のB列の全てのセル(ソートの対象外となる行は除く)を選択してから、「データの入力規則」ダイアログボックスの[設定]タブにおいて「入力値の種類」欄を[リスト]とした上で、「元の値」欄に、次の様な数式を入力して下さい。 =INDIRECT(INDEX($D:$D,ROW()))  これでB列の各行毎に異なるドロップダウンリストを設定した上で、特定の列基準で行の並べ替えを行った際にも、ドロップダウンリストに表示される選択肢の内容が、データとともに移動する様にする事が出来ます。  尚、ここで挙げさせて頂いたドロップダウンリストの設定方法では、「ドロップダウンリストを設定しない予定だったB列のセル」にも、ドロップダウンリストの逆三角マークボタン▼が現れて、そのボタンをクリックしますと、既にそのセルに入力済みの値が1つのみ表示されたドロップダウンリストが表示されますが、そのドロップダウンリストに表示されている以外の値であっても、入力する事は可能ですので、構わずに上書きして下さい。  それから、ここで挙げさせて頂いた2つの方法(ソート可能なドロップダウンリストの設定方法と、ドロップダウンリスト以外のソート可能な入力規則の設定方法)は、1つの列の中では、混在させて使用することは出来ません。  例えば、「B列には[ユーザー設定]の入力規則と、「整数のみの」入力規則を混在させて設定しておき、C列にはドロップダウンリストの入力規則のみを設定しておく」、という事は出来ますが、 「B列に[ユーザー設定]の入力規則と、ドロップダウンリストの入力規則を混在させて設定する」という事は出来ませんので、注意して下さい。

cyan3
質問者

お礼

早速ご丁寧な説明ありがとうございました。 一寸(大分)難しそうですが挑戦してみます

関連するQ&A

  • エクセル 入力規則 (例を入れます。)

    入力規則で疑問があります。 A列に受注日(7月4日、7月7日・・・・「15行目まで」)があります。 J列に納入予定日(7月10、7月15日「15行目まで」)があります。 問題が「納入予定日が受注日から5日目以降になるように入力規則を設定」とあります。 解答は「J列の15行目まで指定し、入力規則から、設定タブを選択、入力値の種類から日付を選択、データを「次の値以上」、次の値から 「A1+5」を選択でした。 この最後が疑問なんですが、A列の15行目まで選択して+5ではなくA1+5なのでしょうか? 確かに結果としては、エラー表示されます。しかし、J列の15行目までが受注日から5日目以降なのですから、A列の15行を選択して+5ではないのでしょうか?

  • エクセル/データの入力規則/フィルターが効かない

    お世話になります。 社員の人事データに係る20列×200行のエクセルシートがあります。 ある列に「データの入力規則」にて「入力値の種類」をリストにし、「元の値」の箱の中に3個の選択肢(例えばA,B,C)をカンマで区切って入力し、その列の入力の際にその3個の選択肢をプルダウンで選択できるようにしてから、200行(200個のセル)にAまたはBまたはCの入力をしました。 その後、1列目の項目の行にフィルターをかけ、A(またはBまたはC)が入力されたデータのみ表示させたいのですが、上から150行目まではちゃんとフィルターが掛かるのですが(即ち、A(またはBまたはC)が入力されたデータのみが表示される)、151行目以降はフィルターがかからず、A、B、C全てのデータが表示されてしまいます。 また、この時、エクセル左端の行番号の数字の色が、150行目までは青色ですが、151行目以降は黒色となっており、151行目前後で何かが違っているようです。 但し、自分自身では何かを変えたつもりは全くなく、何故151行目以降でフィルターが効かないのかが全く分かりません。 また、上記と全く同じこと(「データの入力規則」設定後に入力+フィルター)を別のエクセルファイルで行いましたが、そこでは200行全てがちゃんとフィルターが掛かっています。 何故151行目以降でフィルターが効かないのでしょうか? また、解決策は何かあるでしょうか?

  • エクセルの入力規則にかわるもの

    いつも大変お世話になっております。 エクセルの入力規則をよく作成し使用していますが、表示か8個までで8個以上は▼などで選択していますが、できれば、例えば、20行ある場合20行表示させたり、50行ある時は20行くらいずつ表示をさせたいです。 自分なりに調べたら、フォームコントロールやコンボボックスなどがでてきました。ですがイマイチやり方がわかりません。 やりたいことは、シート2に入力規則のリスト用に品名など名前を付けて、シート1のセルA3に、入力規則→リスト→名前、など登録してあります。シート1のセルA3で選択するときに、シート2で【名前】と登録したものがでます、シート1のセルA3を選択した際に名前がすべて出したいです。ほかには、【品名 1】と【品名 2】もシート1の決まったセルに半分くらいずつ表示させ選択したら選択したものが表示されたいです。 説明が上手くなくすみません。 フォームコントロールなどでできるようでしたら、ご教授お願い致します。

  • EXCEL 数式・関数でソートしたい

    数式・関数でソートする方法を教えてください。 A列に日付、B列に品名、C列に個数が入ったSheet1があります。 これを日付順にソートしたSheet2をつくりたいと思っています。 Smallでやろうと思ったのですが、同じ日付が何回もでてくるために、うまくいきませんでした。 よろしくお願いします。

  • エクセルで他のBookのデータを入力規則のリストに…

    エクセル(Excel2002)の入力規則についての質問です。 仮にBook1のsheet1のA列1~10行に元の値となるデータを作成し,これに「データ」と名前をつけます。 このデータをBook1とは異なるBook2のA列1行において入力規則の元のデータに設定しドロップダウンリストから選択することは可能でしょうか? Book1とBook2は同一フォルダにあります。 ご教示ください。

  • エクセルでのソートについて

    エクセルで縦方向(複数列)にデータを入れていっているのですが、 その中の1つの列のデータを昇順とかでソートしたときに、 その列しかソートされません。 行単位で意味を持ったデータなので、 どこの列でソートしても行も追随してソートしたいのですが、 どうすればいいのでしょう?

  • Excelの入力規則?

    Excelシートに10行1列のデータがあるとします。そのとき10行の入力のうち、”承諾”と”拒否”の2種類の入力をします。”承諾”と入力して別のセルに移動しても文字色はそのまま(黒い)だけども、”拒否”と入力して別のセルに移動したら拒否の文字が自動的に赤色に変わるみたいな入力規則ってつくれるんですか??

  • エクセルのソート(行)について

    エクセルで作成した行単位のデータを、ある列の値 でソートしようとしたら、以下の様なエラー表示が でました。 「この操作には、同じサイズの結合セルが必要す。」 どの行にも同じ列を対象に結合セルがありますが、 このような場合はソートできないのでしょうか? (各行ともセルの書式は同じです。) エクセルのバージョンは、EXCEL2000 9.0.3821 SR-1 です。 ご存知でしたら教えて下さい。

  • 一つの列に2つの入力規則を使いたい。

    B列にはプルダウンで選択するために入力規則で、リストで名前定義を使っているのですが、 また 「そのB列に隣接するA列のセルに何か入力されてないと、 B列に入力できない」 「=入力規則のユーザー設定、COUNTA(A1)=1」 とういう2つのことをしたいです。 でも、入力規則は1つしか出来ないですよね? こうゆう場合はどうすればいいのでしょうか? マクロでしょうか? よろしくお願い致します。

  • エクセルのデーターを複数の規則にしたがって-で区切りたい。

    エクセルのデーターを複数の規則にしたがって-で区切りたい。 社員名簿で社員番号がA列に有ります。 コンピューターから吐き出したデータなので以下の5種類があります。 1.○○○○○○○○○○○○○○ 2.○○○○○-○○○○○ 3.○○○○○○○○-○○○○○ 4.7○○○○○○○○○○○○○ 5.7A○○○○○○○○○○○○ 会社のいろいろな帳票類や書類に記載するには電話番号のように-で区切って記入 をしなければならず名簿もそれに合わせたいです。 法則は以下のようになります。 1.○○○○○○○○○○○○○○ → ○○○-○○○○○-○○-○○-○○ 2.○○○○○-○○○○○ → ○○○○○-○○○○○ 3.○○○○○○○○-○○○○○ → ○○○-○○○○○-○○○○○ 4.7○○○○○○○○○○○○○ → 7○○○○-○○○○○-○○-○○ 5.7A○○○○○○○○○○○○ → 7A○-○○○○○○○○○○○ です。○の部分は英字だったり数字でそれは規則性は無くランダムに入っています。 (どこが英字でどこが数字か不明) A列に5,000件のデータが入っていて上記5種類がランダムに羅列されています。 B列に上記の変換法則にしたがって変換表示をしたいのでB列にその仕組みを入れたいです。 A列でソートして5種類で並びかえをして5分割し、REPLACE文を5種類作成したらできました。 ですが1種類の計算式でこの5種類を変換させるのが希望です。 データー更新のたびにソートして作った5種類の式から選んで登録だと 間違える可能性もありますし手間です。 A列はソートしないでB列の先頭に式を入れてオートフィルで最後列までコピーしたいです。 IF文などを使ってもうまくできません。 教えていただけるとありがたいです。お願いします。