• ベストアンサー

エクセル 同じ文字を自動消去

kazuhiko5681の回答

  • ベストアンサー
回答No.10

こんばんわ。まだ、解決していないみたいですね。 ちょっと面倒かもしれませんが、A1に適当な文字(アルファベットでも数字でも何でもよい)を1文字入れてエンターキーを押した時に行が削除できるようにマクロを組んでみました。1行目は、空白行として下さい。次のように操作します。 1.データの入力されているブックを開き、ALT+F11キーを押してVBE画面を表示する。 2.画面左上にあるVBEProjectと書いてある下のSheet1をダブルクリックし、右側の白い部分に下記のコードをコピー・ペーストする。 3.再びALT+F11キーを押してエクセルの画面にもどる 4.A1に適当な文字を1文字入力するとマクロが動作する。 このマクロはA1とA2が同じ・B1とB2が同じ・C1とC2が同じであった時、2行目のデータを削除するようにしてあります。 もし、うまく動作しなかった場合には、VBAProjectの下にブックに挿入されているシートの枚数文(例えばシートが3枚あったとしたらShet1・Sheet2・Sheet3)コードエディタがあります。Sheet2・Sheet3もそれぞれダブルクリックしてそれぞれのコードエディタに同じようにコードを貼り付けて実行してみて下さい。こちらでは確認済みなので多分今度は動作すると思います。 お手数をおかけいたしますが、よろしくお願いいたします。 Private Sub Worksheet_Change(ByVal Target As Range) Dim myRow As Integer Dim i As Integer Dim j As Integer Dim k As Integer Dim myCnt As Integer If Target.Address = "$A$1" Then Application.EnableEvents = False myRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To myRow - 1 If Cells(i, 1).Value <> "" Then For j = i + 1 To myRow For k = 1 To 3 If Cells(i, k).Value = Cells(j, k).Value Then myCnt = myCnt + 1 If myCnt = 3 Then Rows(j & ":" & j).ClearContents End If End If Next k myCnt = 0 Next j End If Next i Do myRow = Cells(Rows.Count, 1).End(xlUp).Row If Cells(myRow, 1).End(xlUp).Row = 1 Then Exit Do For i = 2 To myRow If Cells(i, 1).Value = "" Then Rows(i & ":" & i).Delete Next i Loop Application.EnableEvents = True End If End Sub 前回アクセスキーを使ってマクロを実行させようとしましたが、うまく動かなかったので、コマンドボタンで実行させる方法もご紹介しておきます。この方法を実行するには、次のように操作して下さい。 1.データが入力されているシートを開く。 2.メニューバーにマウスポインターを合わせて右クリック 3.出てきたプルダウンメニューのVisualBasicをクリック 4.出てきたツールバーのかなづちとスパナのマーク(コントロールツールボックス)をクリック 5.出てきたツールバーの一番右端の上から2番目(コマンドボタン)をクリックし、配置したい位置にマウスポインターを合わせクリックする。 6.配置されたコマンドボタンをダブルクリックするとVBE画面になり、コードエディターに自動的に Private Sub CommandButton1_Click()   ここに下のコードをコピー・ペーストする。 End Sub と表示される。 Dim myRow As Integer Dim i As Integer Dim j As Integer Dim k As Integer Dim myCnt As Integer myRow = Cells(Rows.Count, 1).End(xlUp).Row For i = 1 To myRow - 1 If Cells(i, 1).Value <> "" Then For j = i + 1 To myRow For k = 1 To 3 If Cells(i, k).Value = Cells(j, k).Value Then myCnt = myCnt + 1 If myCnt = 3 Then Rows(j & ":" & j).ClearContents End If End If Next k myCnt = 0 Next j End If Next i Do myRow = Cells(Rows.Count, 1).End(xlUp).Row If Cells(myRow, 1).End(xlUp).Row = 1 Then Exit Do For i = 2 To myRow If Cells(i, 1).Value = "" Then Rows(i & ":" & i).Delete Next i Loop もし、変更点・ご不明な点がございましたらご遠慮なくお知らせ下さい。

jones0901
質問者

補足

本当にありがとうございます 試してみます また結果報告しますので その時はどうぞよろしくお願い致します

関連するQ&A

  • 検索する時、今まで入力してきた文字やメールアドレスが出るのを消去する方法を教えてください。

    インターネットで検索する文字やメールアドレスを入れるとき、今まで使ってきた検索する文字やメールアドレスが、検索する文字やメールアドレスを入れる時に下に、沢山出るようになりますけれど、それを消去する方法を教えてください。すべて、いったんすべてを消去して新しくまた使える方法が解かればありがたいのですが、 検索する文字やメールアドレスを入れるときに、今まで使った事がある文字やメールアドレスが、下に自動的に出るのを無くす方法を教えてください。

  • エクセル操作点線消去

    アドバイスお願いします。 エクセルで一覧表を作ったとき、画面の右側の列に点線が表示され、 プリントした時に、点線の右側の表が写りません。 もし点線が原因であれば、点線の消去の方法を教えてください。 PCはXPです。 よろしくお願いします。

  • エクセルについて

    メールアドレスをエクセルで作ったような時(CSV形式でエクスポートしたような時)、そのメールアドレスの表をプロバイダー別にまとめるようなことは、エクセルで出来ますでしょうか?検索をつかうとひとつづつ取り出していくような形だと思うので、並べ替えのように一発で出来る方法はあるものでしょうか?よろしくお願いします。

  • エクセルでメールの自動送信は可能?

     1枚の書類に担当者がそれぞれ確認内容を記載しながら 仕事を進めています。  各書類を番号で管理し、それをエクセルの 表で台帳管理しています。  途中の担当者が急遽他の仕事に時間を とられるなど仕事に遅れを生じる場合がある のですが、それらをエクセルの表で管理し 全体の調整に使っています。    エクセルの表には、各作業の開始、終了日が 記載されています。 そこで、質問なんですが・・・  エクセルに記載した日付から特定の期間(例えば 一週間)たつと、予め登録しておいた 担当者のアドレスに自動的に電子メールが送信 されるようにしたいのです。  催促のメールの自動送信ということです。 何かいい方法はありますでしょうか?

  • エクセルの文字制限からの文字消去は?

    エクセル2007を使用していますが、現在セル内に60~100程の文字が入っております。 それを50文字に制限し、セル内の50以上の文字を消去したいのです。 例えば 60文字の入っているセルを 50文字制限にして、その差の文字の10文字を自動で消去したいのですが どうすればいいでしょうか?

  • エクセル 文字入力の自動化について

    エクセル初心者です。 Excelで、複数行のセルの値の先頭に"0"を挿入したいのですが、 行数が多すぎるので、自動化したいです。 何か方法を教えていだたけないでしょうか。 例:"12345"を"012345"にしたいのです。 よろしくお願いします。

  • エクセルの自動転記について

    エクセル2003です。 行動予定一覧表を作成中です。 シート1に一覧表 シート2には日付別になっており、 その日付別のを一覧表に自動転記させたいと思っています。 画像をご覧になっていただくのが解りやすいと思うのですが、 項目は、一覧表も日付別も同じものです。 ただ、一覧表にはシート2では欄がなかった日付を加えたいのですが、 これも計算式にて表示出来たらと思っています。 一覧表には、日付別シートの表の中で空欄の場合は、転記されないようにしたいのですが、 可能でしょうか? VBAは苦手なので、出来れば計算式で乗り切りたいと思っています。 何かいい案等があれば教えていただきたいです。 よろしくお願いします。

  • Excel 複数のシートを使って自動入力させていです。

    Excel 複数のシートを使って自動入力させていです。 Sheet1に「一覧表」とし、A1に日にち・B1に入荷先・C1「品物名」・D1「金額」を入力していく一覧表を作成しました。 入荷先の名前をSheet2.3に作り、入荷先ごとにリストを作成したいです。 一覧表に入力しただけで、自動的に入荷先ごとのシートに自動的に入力されてるってことって出来ますでしょうか? 例   A   B   C   D 1 日にち 入荷先   品物   金額 2 4/1 Aスーパー たまねぎ  100 3 4/5 B商店    きゅり   50 これをSheet1「一覧表」をした場合、 Sheet2を「Aスーパー」とし、Sheet2を「B商店」として。同じ表を作成しておく。 一覧表のシートにAスーパーでの購入を入力すると、「Aスーパー」のシートに自動的に表が作られていく 説明下手で申し訳ありませんが、よろしくお願いします!

  • 文字の消去について

    Yahoo の検索画面について質問です。 何って説明したらいいか分かりませんが・・・ 検索を掛けると、検索を掛けた言葉が検索の文字入力画面に残ってしまいます。 ・・・意味通じますか? この履歴のようなものを消去したいのですが、可能ですか? 可能なら消去の方法を教えてください

  • エクセルでこんな表を自動的に作りたいです

    エクセルで下記のような停止値一覧表があります。 <停止値一覧> 記号  停止値 a    3 b    2 c    5 d    4 e    10 上記のデータを元にして、下記のような記号別の連番表を別シートに自動的に作りたいのです。。。 <連番表> No  記号 0   a 1   a 2   a 0   b 1   b 0   c 1   c 2   c 3   c 4   c 0   d 連番表の「No」は連続データで、 ・開始値=ゼロ、 ・停止値=<停止値一覧>の停止値からマイナス1した値、 ・増分=1 です。 関数で簡単に出来ますでしょうか?それともマクロか何かになるのでしょうか..? 分かりにくい説明で恐縮ですが、いい方法をお分かりの方、助けて頂けないでしょうか。 よろしくお願いします。 追記:エクセルは2002を使用しています