Номер места (ранга), как места распределить...

Программирование на Visual Basic for Applications
m-13
Начинающий
Начинающий
 
Сообщения: 2
Зарегистрирован: 03.11.2004 (Ср) 17:16

Номер места (ранга), как места распределить...

Сообщение m-13 » 11.05.2005 (Ср) 19:06

Может кто сталкивался, на мой взгляд вещь обычная, наглядная и вполне могла где-то кому-то встретиться, но я что-то "зациклился" и простым циклом решить не могу...
Данные - цифры (хоть Integer), уже отсортированны, нужно в соседнем столбце их места указать.
Проблема в том что если одна цифирь равна следующей (все после сортировки) то она "делит" с ней свое место.. т. е. если исходный ряд напр. 3,4,4,4,71,83,83,97,0,0. То места распределятся должны так 1,2-4,2-4,2-4,5,6-7,6-7,8,-,- .
попытки мои, не приблизили и на половину к решению..
мне кажется все гораздо проще, а может где-то рядом..
нули в конец переместить-"попутная просьба", я сам это дело решил тем что на "-" или текст их меняю перед сортировкой.
Код: Выделить всё
Sub Padalka()
       For n = 0 To 13
        For i = 0 To 13
            If Cells(4 + i, 2) = Cells(4 + 1 + i, 2) Then
                Cells(4 + i, 5 + n).Value = "'"&i + 1 & "-" & i + 2
                Cells(4 + i + 1, 5 + n).Value = Cells(4 + i, 5 + n)
            Else
                Cells(4 + i, 4).Value = i + 1
            End If
        Next i
    Next n
End Sub

ЕЩЕ вариант
Sub Padalk01()
     Dim tEmp As String
    For i = 0 To 13
        If Cells(4 + i, 2) <> Cells(4 + 1 + i, 2) Then
            Cells(4 + i, 4).Value = i + 1
        Else
            First = i
        GoTo DoAnaser01
        End If
    Next i
DoAnaser01:
        Cells(4 + i, 4).Value = "'" & i + 1 & "-" & i + 2
        Cells(4 + i + 1, 4).Value = Cells(4 + i, 4)
        For i = First To 13 - 2
            If Cells(4 + i, 2) <> Cells(4 + 1 + i, 2) Then
                Cells(4 + i + 2, 4).Value = i + 2 + 1
            Else
                Last = i
            GoTo DoAnaser02
            End If
        Next i
DoAnaser02:
        Cells(4 + i, 4).Value = "'" & i + 1 & "-" & i + 2
        Cells(4 + i + 1, 4).Value = Cells(4 + i, 4)
        For i = Lsst To 13 - 2
                Cells(4 + i + 2, 4).Value = i + 2 + 1
        Next i
End Sub

И ЕЩЕ вариант
Sub Padalk02()
    Dim i As Integer
    Dim tEmp(13) As Integer
    For i = 0 To 13
        If Cells(4 + i, 2) = Cells(4 + 1 + i, 2) Then
        tEmp(1) = i
        tEmp(2) = i + 1
        Cells(4 + tEmp(1), 4).Value = "'" & tEmp(1) & "-" & tEmp(2)
        Cells(4 + tEmp(2), 4).Value = Cells(4 + tEmp(1), 4)
        Cells(tEmp(2) + i, 4).Value = tEmp(2) + i
        Else
        Cells(4 + i, 4).Value = i + 1
        End If
    Next i
End Sub

В общем гуляю я неизвестно где, может кто поможет...
m-

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 12.05.2005 (Чт) 4:55

Гы :)
Вложения
Книга1.zip
(5.25 Кб) Скачиваний: 42
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3

    TopList