11/10/15 10:11:11.94
>>694
そういうのは本来データベースで行うべきです。Access使ってください。
と言いたいところですが、この要望は結構多いので少し解説を。
Excelでは「行単位のデータ関係が崩れないようにソートする」というのは可能ですが
フィールドとレコードのように行や列単位で意味を持っているわけではなく、あくまで独立した単一セルの概念なので
「どんな操作をしても行単位のデータ関係が崩れないように設定する」ことは基本的に不可能です。
シートを保護すれば、データが崩れなくすることは出来ますが、行単位での並べ替えすら出来なくなります。
とりあえず「行単位のデータ関係が崩れないようにソートする」の実現法としては
①一手間増えるが「昇順並べ替え」「降順並べ替え」の一発ソートではなく「並べ替え(オプション設定可能)」を使う
標準の並べ替え機能は、対象が選択範囲であり、更に一発ソート系はキーが選択範囲最左列固定なので
手軽な代わりに融通が利かず、B列をキーにA列も含めてソートというのは出来ないが、「並べ替え(オプション設定可能)」なら
ダイアログでキー列等を設定する手間は掛かるが、目的自体は完璧に達せられる
②2003以降に乗り換える
オートフィルタのメニュー内に「昇順並べ替え」「降順並べ替え」があり、それらはオートフィルタを設定した列範囲内では
行単位のデータを崩さずに一発ソートできる
③VBA使う
ActiveSheet.UsedRange.Sort key1:=ActiveCell, Order1:=SortOrder
で、アクティブセルの列をキーにして、行単位のデータを崩さずソート出来るので、これをツールボタンに登録して、
標準の一発ソートの代わりにツールバーに出しておく
Order1やHeader等のオプションは適宜指定するように
因みに、VBAとシート保護を使えば、「どんな操作をしても行単位のデータ関係が崩れないように設定する」と
「行単位のデータ関係が崩れないようにソートする」を一応両立できます。
初期状態でシート保護しておき、VBAでは「シート保護解除→行単位ソート→シート保護」を行います。
標準の並べ替え機能はシートの保護で殺しておき、VBAで自作した行単位ソートだけ、一時的な保護解除で使えるようにするわけです。