• ベストアンサー

EXCELでセルの内容をクリアーしたい

下記のような表でEセルに済が入ったらその行の内容をクリアーしてブランクセルにしたいのですが。 例  A1   B1    C1    D1    E1 8/25  静岡  りんご  100個   済 ←この列を消したい 8/26  岡山  バナナ  120個   8/27  岐阜  みかん  260個 できるでしょうか?よろしくお願いします。

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

  • ベストアンサー
  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.4

No.1 & No.2です。 > 実際には1を入れるセルはDDなのです。 > そして、消去したいのはCW~DCまでです。 DDの 1 は残しておくのでしょうか? ↓で試してみてください。 '-------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)   With Target     If .Column = 108 Then       If .Value = 1 Then         Range(Cells(.Row, "CW"), Cells(.Row, "DC")).ClearContents       End If     End If   End With End Sub '--------------------------------------- DDの 1 も消すのでしたら Range(Cells(.Row, "CW"), Cells(.Row, "DC")).ClearContents の "DC" を "DD" に修正してください。

kogoro
質問者

お礼

うまくいきました!べりナイスです。 どうも、ありがとうございました。

その他の回答 (4)

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.5

(1)関数では行を削除することはできません。 関数は値しか返さず、セル、行、列の削除、挿入はできません. (2)したがってVBAにならざるを得ません。 (3)ただし質問の目的という条件にあえば下記のようなことができます。 sheet1の別の範囲とかSheet2でよければという条件です。 (imogasi方式) 例データ Sheet1のA2:C10 a 1 x 済 b 2 y 1 c 3 z 2 d 4 v 済 e 5 w 3 f 6 s 済 g 7 y 4 d 5 t e 6 j D列に済の漢字を入れる(一定の文字を1種入れる) D2セルに =IF(D2="済","",MAX($F$1:F1)+1) と入れてD10まで複写。 Sheet2のA2に =INDEX(Sheet1!$A$1:$C$10,MATCH(ROW()-1,Sheet1!$E$1:$E$10,0),1) と入れてA10まで複写する。 Shhet2のB2に=INDEX(Sheet1!$A$1:$C$10,MATCH(ROW()-1,Sheet1!$E$1:$E$10,0),2) と入れてB10まで複写する。 C2に =INDEX(Sheet1!$A$1:$C$10,MATCH(ROW()-1,Sheet1!$E$1:$E$10,0),3) と入れてC!0まで複写する。 結果 は済のない行が出ます。 済をSheet1のD列で増やすと、Sheet2は1行ヘリ、消すと1行増えます b 2 y c 3 z e 5 w g 7 y #N/A #N/A #N/A #N/A #N/A #N/A #N/A #N/A #N/A #N/Aは=IF(ISERROR(上記式),"",上記式)で消してください。

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.3

すみません、No.2です。 EntireRow.ClearContents の前にピリオドが必要なのですが、 ピリオドが消えてしまったようです。 コードを貼り付けてから、EntireRow の前にピリオドを入力して、TABキーを押してください。

  • shiotan99
  • ベストアンサー率68% (140/203)
回答No.2

こんにちは~ > 実際には入力に面倒な済ではなく A でも B でもいいのです。 ★ E列に 1 を入力すれば、その行全体をブランクにします。 該当するシートのシートタブを右クリックして、「コードの表示」を選択 右のコードウィンドウに↓のコードをコピーして貼り付けてください。 '--------------------------------------------- Private Sub Worksheet_Change(ByVal Target As Range)   With Target     If .Column = 5 Then       If .Value = 1 Then         EntireRow.ClearContents       End If     End If   End With End Sub '---------------------------------------------- 右上の閉じるボタン(×)をクリックして、EXCELに戻ってください。

kogoro
質問者

補足

説明がたりなくてごめんなさい! 実際には1を入れるセルはDDなのです。 そして、消去したいのはCW~DCまでです。 この行には他にもいろいろ入っていて行全体が消去されるとこまるのです。 どうもすみません。

  • thrush76
  • ベストアンサー率27% (38/137)
回答No.1

E列でソートをかけて、「済」を寄せ集めてはどうでしょう。 元に戻しやすいように、違う列に連番を振っておくと良いかもしれません。

kogoro
質問者

お礼

早速の回答有難うございます。 ソートをかけることは考えたのですが、集めてクリアーという手順が増えますので、できれば済が入った時点でさっとクリアーできるとありがたいのですが.... 実際には入力に面倒な済ではなく A でも B でもいいのです。

kogoro
質問者

補足

マクロを使ってもいいのですが、ソートさせるところまではできるのですが、済の入ったところだけをクリアーさせるところがわかりません。

関連するQ&A