Εμφάνιση ενός μόνο μηνύματος
  #3  
Παλιά 05-05-15, 11:35
Το avatar του χρήστη Spirosgr
Spirosgr Ο χρήστης Spirosgr δεν είναι συνδεδεμένος
Συντονιστής
Όνομα: Σπύρος Τσιλιγιάννης
Έκδοση λογισμικού Office: Ms-Office 2003, Ms-Office 2007, Ms-Office 2010, Ms-Office 2013, Ms-Office 2016, Ms-Office 365
Γλώσσα λογισμικού Office: Ελληνική, Αγγλική
 
Εγγραφή: 22-11-2011
Περιοχή: Αθήνα
Μηνύματα: 2.321
Προεπιλογή

Μια άλλη ιδέα θα ήταν η εξής:
Στο κελί e4
Κώδικας:
=RANDBETWEEN(1000;9999)
Στο κελί f4 τύπος πίνακα (Ctrl +Shift + Enter)
Κώδικας:
=LARGE(ROW($1000:$9999)*NOT(COUNTIF($E$4:E4;ROW($1000:$9999)));RANDBETWEEN(1;(9999+2-1000)-ROW(D4)))
Τραβάμε κάτω όσο χρειάζεται.
Πλεονέκτημα:
Δεν έχουμε αριθμούς μόνο από την πρώτη χιλιάδα (1001, 1005, 1125 ... κλπ)
Αντιγράφουμε τις τιμές μόνο από την περιοχή f4: fx στην περιοχή d4:dx

Σημείωση:
Αν οι τυχαίοι αριθμοί έχουν ρόλο ID για το κάθε ονοματεπώνυμο
καμία μέθοδος με τύπο δεν είναι ασφαλής 100%, σε περίπτωση που εγγραφούν νέα ονόματα.

Πρόταση:
VBA

Κώδικας:
Sub DoRandomValues()
    Dim FillRange As Range, c As Range
    Set FillRange = Range("d4:d17")
    For Each c In FillRange
        Do
            c.Value = Int((9999 - 1000 + 1) * Rnd + 1000)
        Loop Until WorksheetFunction.CountIf(FillRange, c.Value) < 2
    Next
End Sub
Ο κώδικας αποδίδει τυχαίους 4ψήφιους αλλά:

Κώδικας:
'Προσθέτει γραμμή σε πίνακα
'Προσθέτει ID που αυξάνει + 1 με κάθε νέα γραμμή
Sub AddRow_Tbl()
    Dim c As Range
    Application.ScreenUpdating = False
    Sheet1.Range("_").ListObject.ListRows.Add (1)
    Range("SetStartID").Value = Range("SetStartID").Value  + 1
    For Each c In Range("Column_With_ID")
        If c.Value = vbNullString Then
            c.Value = "ID_" & " " & Range("SetStartID").Value
        End If
    Next
End Sub
αυτός αποδίδει σε πίνακα μοναδικό ID μορφής ID_2568
αυξανόμενο κατά 1 σε κάθε νέα εγγραφή.
Πλεονέκτημα:
Ποτέ δεν θα υπάρξει επανάληψη ενός αριθμού ID (όπως στην Access)

Sheet1 = το κωδικό όνομα φύλλου
Range("_") = πρώτο κελί αριστερά κάτω από κεφαλίδα
Range("SetStartID") = ένα κελί με τον αριθμό εκκίνησης ID
Range("Column_With_ID") = ονομασία της στήλης πίνακα με τα ID
Add (1) = η θέση εισαγωγής νέας γραμμής (πρώτη)
Απάντηση με παράθεση