• 締切済み

Excelについて質問です。

Excelについて質問です。 複数行にわたり、セル値を入力するのですが、1行に同じセル値が出てきた場合、2回目以降は自動で削除したい。(行がまたがる場合は削除の対象ではない。)ただし、セル値は決まった数ではなく行により数はランダムです。 マクロで作成するしか方法はないのかと思いますがマクロ作成方法が全く分かりません。 マクロ作成方法など教えていただければ幸いです。

みんなの回答

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

 質問者様のやりたい事が解り難いかったのですが、Excelで左から右に向かって入力して行った際に、同じ値のセルが複数存在している場合には、最も左側にある1つを残して、その値が入力されているセルを削除したい、という事なのでしょうか?  これから入力されるのでしたら、 B2セルを選択   ↓ メニューの[データ]をクリック   ↓ 現れた選択肢の中にある[入力規則]をクリック   ↓ 現れた 「データの入力規則」ウィンドウの[設定]タグをクリック   ↓ 「入力値の種類」欄を「ユーザー設定」にする   ↓ 「数式」欄に次の数式を入力 =COUNTIF($A1:A1,B1)=0   ↓ [OK]ボタンをクリック   ↓ B2セルをコピーして、A列以外のセルに貼り付ける という方法で、重複値を入力出来なくするという方法もありますが、それでは駄目なのでしょうか?  或いは、Sheet1に値を入力して行くと、Sheet2の同じ行に重複値を削除して、空欄になる箇所を詰めて並べ直したデータを、表示させるのでしたら、作業用Sheetを設ければ、関数でも可能です。  まず、Sheet3を作業用Sheetとして使用し、そのA1セルに次の数式を入力して下さい。 =IF(OR(Sheet1!A1="",COUNTIF(Sheet1!$A1:A1,Sheet1!A1)>1),"",COLUMN(Sheet1!A1))  続いて、Sheet3のA1セルをコピーして、Sheet3において、Sheet1で値を入力する可能性があるセル範囲と、同じ行番号と列番号を持つSheet3のセル範囲を、カバーするのに充分なセル範囲に貼り付けて下さい。  次に、Sheet2のA1セルに次の数式を入力して下さい。 =IF(COLUMNS($A:A)>COUNT(Sheet3!1:1),"",INDEX(Sheet1!1:1,SMALL(Sheet3!1:1,COLUMNS($A:A))))  続いて、Sheet2のA1セルをコピーして、Sheet2において、Sheet1で値を入力する可能性があるセル範囲と、同じ行番号と列番号を持つSheet2のセル範囲を、カバーするのに充分なセル範囲に貼り付けて下さい。  以上です。