Posted to microsoft.public.excel.misc
|
|
Prevent Duplicate Records
okay I cannot get this to work, can you help me. Also I need it to work for
every roll possible to the last row in excel. I have to have this work in
2003, please help
"T. Valko" wrote:
Ok, so we need to test *every* instance of the account number...
Try this:
=IF(COUNTIF(A:A,A1)<=1,TRUE,COUNTIF(A:A,A1)-1=SUMPRODUCT(--(A$1:A$100=A1),--(L$1:L$100<"")))
SUMPRODUCT will not accept entire columns as range references (unless you're
using Excel 2007) so we need to define a specific range.
Scenario 1 allows you to enter the acct # in A1
......A.....L
1...1.......
Scenario 2 does not allow you to enter the same acct # in A2
......A.....L
1...1.......
2...1.......
Scenario 3 allows you to enter the same acct # in A2
......A.....L
1...1.....x
2...1
Scenario 4 does not allow you to enter the same acct # in A3
......A.....L
1...1.....x
2...1.......
3...1.......
--
Biff
Microsoft Excel MVP
"Kenny" wrote in message
...
Okay its working, but its not working See example.
Scanario 1:
Col A Col L
Account Number Deactive
023-64000 Deactive
Result: I enter the same account number it lets me. This is correct.
Scanario 2:
Col A Col L
Account Number Deactive
023-64000 *NOTHING ENTERD*
Result: I enter the same account number it will not let me. This is
correct.
Scanario 3:
Col A Col L
Account Number Deactive
023-64000 Deactive
023-64000 *NOTHING ENTERD*
Result: I enter the same account number it lets me enter the account
number
again This is incorrect. Our validation only checks 1 instance to see if l
is
populated. It needs to check all instances of duplicate account numbers if
L
is empty in any of the instances it will not let me enter the account
number
again?
"T. Valko" wrote:
Try this:
DataValidation
Allow: Custom
Formula:
=IF(COUNTIF(A:A,A1)<=1,TRUE,INDEX(L:L,MATCH(A1,A:A ,0))<"")
Note that this will only work if the data is entered from the top down
due
to how MATCH works.
--
Biff
Microsoft Excel MVP
"Kenny" wrote in message
...
Chip thanks this would work in a normal circumstance, but not working
for
what I need. This is what I need to happen.
If Account Number being entered into Col A matches a exsisting record
in
col
A and the exsisting record's col L is populated with any value then you
can
enter the duplicate account number.
Else Col L of exsisting record is empty then clear current cell A and
msg
box This account number is active.
In otherwords Col L decided wether a record is active or not. If the
record
is active then you cannot enter the account number again. But if it is
populated then the record is deactivated and you can enter it again.
Thanks!
"Chip Pearson" wrote:
You can do this with data validation *if* the data entered in column
A
is
entered from the top down.
You can do it even if the values are entered into column A in an
arbitrary
manner; there is no need for the "top down" restriction. Suppose you
can
safely say that ALL the data will be entered somewhere within the
range
A1:A20. Even if you don't use all the cells in that range, you can be
sure
than no data will be entered in other rows. Given that, select A1:A20,
go
to
the Data menu, choose Validation, and then Custom in the Allow list.
There,
enter the formula:
=COUNTIF($A$1:$A$20,A1)=1
This will prevent duplicates in A1:A20 regardless in the order in
which
they
are ordered.
--
Cordially,
Chip Pearson
Microsoft MVP - Excel, 10 Years
Pearson Software Consulting
www.cpearson.com
(email on the web site)
"T. Valko" wrote in message
...
You can do this with data validation *if* the data entered in column
A
is
entered from the top down. For example, you enter an account number
in
A1
then A2 then A3 etc. It won't work if you enter the data randomly
like
in
A10 then A2.
Interested in that?
--
Biff
Microsoft Excel MVP
"Kenny" wrote in message
...
I have a spreadsheet Column A is the account number. I want to write
a
procedure that if the user enters the same account number in column
a
that
already exsits and that exsisting record has nothing in column L
then
it
clears the cell and msgbox them record already exsists. If column l
of
the
exsisting record does contain data it will allow them to add the
account
number over again. Here is my code and I have not started this
procedure
anywhere in this code. Thanks!
Option Explicit
Sub SortThisSheet()
Dim LastRow As Long
Application.EnableEvents = False
With Me
If .FilterMode Then
.ShowAllData
End If
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row
With .Range("a5:L" & LastRow)
.Cells.Sort Key1:=.Columns(1), Order1:=xlAscending, _
Header:=xlYes, Orientation:=xlTopToBottom
End With
End With
Application.EnableEvents = True
'AutoFilterMode = False
End Sub
'charge off date date()+10
Private Sub Worksheet_Change(ByVal Target As Range)
With Target
If .Count 1 Then Exit Sub
If Intersect(Range("D:D"), .Cells) = "Out For Repo" Then
Application.EnableEvents = False
If IsEmpty(.Value) Then
.Offset(0, 2).ClearContents
Else
With .Offset(0, 2)
.Value = Date + 10
End With
End If
Application.EnableEvents = True
End If
End With
'pick data from code sheet for rescode
If Target.Cells.Count 1 Then Exit Sub
If Target.Column = 9 Then
If Target.Value = "" Then Exit Sub
Application.EnableEvents = False
If (IsError(Application.VLookup(Target.Value,
Worksheets("Codes").Range("CodeData"), 2, 0))) Then
Target.Value = ""
Else
Target.Value = Application.VLookup(Target.Value,
Worksheets("Codes").Range("CodeData"), 2, 0)
End If
Application.EnableEvents = True
End If
End Sub
Private Sub ActiveRecords_Click()
Application.ScreenUpdating = False
Band3.Enabled = True
Band4.Enabled = True
Band5.Enabled = True
Manager.Enabled = True
Military.Enabled = True
ActiveRecords.Enabled = False
ReportPreview.Enabled = True
Call SortThisSheet
Range("A5").AutoFilter Field:=3
Range("A5").AutoFilter Field:=12, Criteria1:="="
Application.ScreenUpdating = True
End Sub
Private Sub Band3_Click()
Application.ScreenUpdating = False
Band3.Enabled = False
Band4.Enabled = True
Band5.Enabled = True
Manager.Enabled = True
Military.Enabled = True
ActiveRecords.Enabled = True
ReportPreview.Enabled = True
Call SortThisSheet
Range("A5").AutoFilter Field:=3, Criteria1:="Band 3"
Range("A5").AutoFilter Field:=12, Criteria1:="="
Application.ScreenUpdating = True
End Sub
Private Sub Band4_Click()
Application.ScreenUpdating = False
Band3.Enabled = True
Band4.Enabled = False
Band5.Enabled = True
Manager.Enabled = True
Military.Enabled = True
ActiveRecords.Enabled = True
ReportPreview.Enabled = True
Call SortThisSheet
Range("A5").AutoFilter Field:=3, Criteria1:="Band 4"
Range("A5").AutoFilter Field:=12, Criteria1:="="
Application.ScreenUpdating = True
End Sub
|