[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ダブり』(@@)
AH4〜AH19374で同じ文字文字が入った時に
何か表示できる方法ってありますでしょうか??
初心者ですのでよろしくお願いいたします。
よく解りませんが、これのこと? BJ http://www.excel.studio-kazu.jp/cgi-bin/estindex/estseek2.cgi?phrase=%E9%87%8D%E8%A4%87%E5%85%A5%E5%8A%9B&perpage=10&attr=&order=&clip=-1&navi=0
ありがとうございます。
=COUNTIF($AH$4:$AH$19374,$AH$4)>1と書式で赤色を選択
上記の式(入力規則)でいれましたが?AHの列の重複が出ないのと
AH4に新宿-001
AH5に新宿-001を入力したところAI5に色付けしてしまい??
最初からと追加質問しても良いでしょうか?
AH
【4】新宿-001
【5】新宿-001
と入力した場合にAH4とAH5のセルを色付けしたいのと(重複ならば)
名前の後に(文字数は2文字とは限らない)必ずハイフンと3桁の数字
が入らないといけない決まりがあるのですが・・
現在のミスは重複があってもそのまま入力してしまうことと、ハイフンの
あとが2桁になったままで・・なんて事で困っています。(@@)
=COUNTIF($AH$4:$AH$19374,$AH4)>1 では
=COUNTIF($AH$4:$AH$19374,$AH$4)>1 ^^^^^ 絶対参照になっているのが原因でしょう。。。1列ならAH4でいいのでは。。。 (gon-2) ダブリました。失礼
=COUNTIF($AH$4:$AH$19374,$AH4)>1で入れてダブりありと表示
するようにしましたが?何をいれても注意が出てきてしまいます??
入力規則で(データ→入力規則→設定→ユーザー設定→エラーメッセージ)
を使用したいのですが・・・色とか表示しなくともダブりがある場合わかれば・・
(@@)
入力許可は、1個だけだから・・・。 入力値の種類は、ユーザー設定で(空白を無視するのチェックは外さないこと。) =COUNTIF($AH$4:$AH$19374,$AH4)=1 BJ
AH4〜AH19374をドラッグ選択しておいて 条件付き書式 数式が =COUNTIF($AH$4:$AH4,$AH4)>1 書式 フォント 赤
としますとダブリ数字の2個目から赤表示となります。 参考までに (gon-2)
ハイフンと3桁の数字が入らないといけない決まりがあるのですが・・
入力規則
=LEN(MID(A1,FIND("-",A1)+1,5))=3
上記の=LEN(MID(A1,FIND("-",A1)+1,5))=3
をいれましたが・数式のエラーと出てしまいます??
入力規則のユーザー設定で式を入れたのが違うのでしょうか?
(@@)
たぶん =AND(LEN(AH4)>4,ISNUMBER(--RIGHT(AH4,4)),--RIGHT(AH4,4)<0,COUNTIF($AH$4:$AH$19374,$AH4)=1) BJ
=AND(COUNTIF($AH$4:$AH$19374,$AH4)>1,NOT(ISERROR(FIND(2,$AH4,1)))) ((!))
しかしエラーがでてしまい??私のやり方がいけないのでしょうか?
AH4からAH19374を指定して入力規則
データ→入力規則→設定→ユーザー設定→エラーメッセージと入力しているのですが。。
(@@)
どうもすっきり治まりまへんなぁ・・・。 ほならこんなんどうでっか? もし、気ぃにいりまへんでしたらポイしてくらはい。(可哀想・・・) テストとして新しいブックのSheet1のAH4から下に20000行のデータを(本物でも偽物 でも)放り込んでおくんなはれ。
多分ご存じでっしゃろから割愛しますが標準モジュールに下のコードをコピペします。 戻って、重複抽出を実行しますと、Sheet1には重複したセル全てに色付けされてます。 また、Sheet damyには重複データの行番号が抽出されとりますんで、削除するなり消去 するなりして重複の無いデータを並べます。
damy をDelteし、色を消しさえすれば、何度でも重複データを抽出色付けでけますから 完全になくなるまでやりませう。 Sheet damyに何も表示されなくなれば、重複データは存在しないキレイなデータがAH 列に並びます。
今度は\Sheet1/を右クリック、コードの表示を選択し、そこへもうコードをコピペ します。 これで準備は完了ですワ。 重複したデータは受け付けまへんし、不備なデータも受け付けないようになっとります。 まぁ、まぁ、一遍試してみておくんなはれ。 (弥太郎) ’標準モジュールへ '-------------------------- Sub 重複抽出() Dim dic As Object, dic_1 As Object, i As Long, adrs As Range, tbl, x, y, ky
Set dic = CreateObject("scripting.dictionary") Set dic1 = CreateObject("scripting.dictionary") tbl = Cells(4, 34).Resize(Cells(Rows.Count, 34).End(xlUp).Row - 3).Value For i = 1 To UBound(tbl, 1) If dic.exists(tbl(i, 1)) Then y = dic1(tbl(i, 1)) x = dic(tbl(i, 1)) ReDim Preserve x(UBound(x) + 1) ReDim Preserve y(UBound(y) + 1) x(UBound(x)) = i + 3 y(UBound(y)) = Cells(i + 3, 34).Address(0, 0) dic(tbl(i, 1)) = x dic1(tbl(i, 1)) = y Else dic(tbl(i, 1)) = Array(tbl(i, 1), i + 3) dic1(tbl(i, 1)) = Array(Cells(i + 3, 34).Address(0, 0)) End If Next i Sheets.Add ActiveSheet.Name = "damy" With Sheets("damy") i = 0 For Each ky In dic.keys x = dic(ky) If UBound(x) + 1 > 2 Then i = i + 1 .Cells(i + 3, 1).Resize(, UBound(x) + 1) = x End If Next ky End With With Sheets("sheet1") ky = Empty For Each ky In dic1.keys y = dic1(ky) If UBound(y) + 1 > 1 Then Set adrs = Union(.Range(y(0)), .Range(Join(y, ","))) adrs.Interior.ColorIndex = 6 End If Next ky End With Set dic = Nothing Set dic1 = Nothing End Sub
'シートモジュールへ '------------------------------- Private Sub Worksheet_Change(ByVal Target As Range) If Target.Count > 1 Then Exit Sub If Target.Column <> 34 Then Exit Sub If Target.Row < 4 Then Exit Sub Application.EnableEvents = False With CreateObject("vbscript.regexp") .Pattern = "(.+)-\d{3}$" If Not .test(Target) Then MsgBox "正確に入力しまひょ ", vbExclamation Target = "" Target.Select GoTo trbl End If End With If WorksheetFunction.CountIf(Range("ah:ah"), Target) > 1 Then MsgBox "そのデータは重複します", vbExclamation Target = "" Target.Select GoTo trbl End If trbl: Application.EnableEvents = True End Sub
>しかしエラーがでてしまい??私のやり方がいけないのでしょうか? これって、エラーと判断されますとかのアラートですか? 無視してください。 因みに・・・、○○○-000 の「-000」はダメです。001から。 それと、「- 1」半角スペースは通っちゃいます。 BJ
(弥太郎)さんの式で質問があります。。
今回からのデータはハイフン無しになってしまいました。
上記の.Pattern = "(.+)-\d{3}$"の-を削除して行なったところOKのような??
一箇所で大丈夫でしょうか?
もう一つトラブルがあるのですが・・
マクロを実行すると固まった状態で??データ数が多いのが原因??A1:AN19374内で作業しています。
空のエクセルファイルだとOKなのですが??
何度も申し訳ございません。。
(@@)
半角数字限定っちゅうなら"(.+)\d{3}$"でいけますワ。 それとフリーズするとは重複を検索して色付けする方のマクロでっか?それともチェン ジイベントの方でッか? それがしの手元にはあんさんのお使いになっとられるデータがありまへんもんで、なん で固まるのかは推測しかねますワ。 まぁ、なんにせよ固まるようでは使いモンになりまへんわなぁ。 やっぱし条件付書式でいきますか・・・。 (弥太郎)
条件付き書式ですか・・・
=COUNTIF($AH$4:$AH$19374,AH4)>1で行なったのですが・ちょっと遅いような??
データが入っていないものは大丈夫なのですが・・
現在のエクセルはサイズ9.95 MB (10,435,584 バイト)です。
(@@)
えっ??? >現在のエクセルはサイズ9.95 MB (10,435,584 バイト)です。 そりゃ〜 重いでんな・・・ ためしに、そのBOOKそのものを新規BOOKに、コピペしてみてから名前をつけて保存しても 同じ重さですか? 要らないもの(ゴミのようなもの)が溜まっているだけなんではないでしょうか? (キリキ)(〃⌒o⌒)b
今後もまだまだ入力するので重くなるのでは・・・心配です。
入力規則では反応はいまいち・・で(弥太郎)さんの標準モジュールとシートモジュール
で色付けマクロを使用しなければ、MsgBox "正確に入力しまひょ と"そのデータは重複します"
で表示されるので使用させていただこうと思っています。
欲を言えば入力した時にたとえばAH10に新宿-001と既に入力されているとして
AH1000に新宿-001を入力したとき【AH10に重複あり】などとメッセージが出る・・・
何て夢を見ています。。欲張りで申し訳ございません。。(@@)
> AH1000に新宿-001を入力したとき【AH10に重複あり】などとメッセージが出る・・・ この点に於いては下のコードに差し替えて貰えれば充分ですけワ。 (弥太郎) '----------------------- Private Sub Worksheet_Change(ByVal Target As Range) Dim data As String, mch_row As Variant
If Target.Count > 1 Then Exit Sub If Target.Column <> 34 Then Exit Sub If Target.Row < 4 Then Exit Sub Application.EnableEvents = False With CreateObject("vbscript.regexp") .Pattern = "(.+)-\d{3}$" If Not .test(Target) Then MsgBox "正確に入力しまひょ ", vbExclamation Target = "" Target.Select GoTo trbl End If End With If WorksheetFunction.CountIf(Range("ah:ah"), Target) > 1 Then data = Target Target = "" mch_row = Application.Match(data, Range("ah:ah"), 0) Target = data MsgBox "AH" & mch_row & "に重複有り", vbExclamation Target = "" Target.Select GoTo trbl End If trbl: Application.EnableEvents = True End Sub
活用させて頂きます。
あっ!文字と半角数字の3桁ですが.Pattern = "(.+)-\d{3}$"で?
半角数字限定っちゅうなら"(.+)\d{3}$"でって書いてありましたので
(@@)
ハイフンが必要なら上のんで、不要なら下のんでOKです。 (弥太郎)
いろいろとありがとうございました。(@@)
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.