Премини към съдържанието
Форумът в приложение

По-лесно сърфиране. Научи повече.

Kaldata.com - Форуми

Приложение на форума на цял екран с push известия, значки и други.

За да инсталирате това приложение на iOS и iPadOS
  1. Докоснете Иконата за споделяне в Safari
  2. Превъртете менюто и докоснете Добавяне към началния екран.
  3. Докоснете Добавяне в горния десен ъгъл.
За да инсталирате това приложение на Android
  1. Докоснете менюто с 3 точки (⋮) в горния десен ъгъл на браузъра.
  2. Докоснете Добавяне към началния екран или Инсталиране на приложение.
  3. Потвърдете, като докоснете Инсталиране.

Добре дошли!

Добре дошли в нашите форуми, пълни с полезна информация. Имате проблем с компютъра или телефона си? Публикувайте нова тема и ще намерите решение на всичките си проблеми. Общувайте свободно и открийте безброй нови приятели.

Моля, регистрирайте се за да публикувате тема и да получите пълен достъп до всички функции.

 

Цикъл за елиминиране на еднакви числа в колони на EXCEL

Featured Replies

Здравейте. Трябва да направя Macros в Excel, като имам 4 колони и трябва когато срещне еднакво число в колоната да се елиминира, но немога да направя формулата или цикъл на basic. Можете ли да ми помогнете?

преди 19 часа, Bbt_sm написа:

 

Здравейте. Трябва да направя Macros в Excel, като имам 4 колони и трябва когато срещне еднакво число в колоната да се елиминира, но немога да направя формулата или цикъл на basic. Можете ли да ми помогнете?

 

Примерен собствен макрос

В примера данните са разположени в колона B, от 1 до 8 ред.

Sub Macro2()
 Dim I As Long, J As Long
 For I = 8 To 2 Step -1
  For J = I - 1 To 1 Step -1
   If Range("B" & I).Value = Range("B" & J).Value Then
    Range("B" & J).Delete Shift:=xlUp
   End If
  Next
 Next
End Sub

  • Автор

Благодаря, но ми трябва да сравнява числа в 2 колони и ако едно число от едната колона го има и във втората колона да се изтрива или да се приравнява на 0 по-добре. Иначе кода работи перфектно. Благодаря

Редактирано от Bbt_sm (преглед на промените)

  • Автор

Private Sub CommandButton10_Click()
   Dim CompareRange As Variant, x As Variant, y As Variant
    Set CompareRange = Range("C1:C10")
    For Each x In Selection
        For Each y In CompareRange
            If x = y Then x.Offset(0, 1) = 0
        Next y
    Next x
End Sub

 

Незнам как да направя така че след then да се нулират дублиращите числа, а не да ми се записват в отделна колона

Редактирано от Bbt_sm (преглед на промените)

преди 2 часа, Bbt_sm написа:

Private Sub CommandButton10_Click()
   Dim CompareRange As Variant, x As Variant, y As Variant
    Set CompareRange = Range("C1:C10")
    For Each x In Selection
        For Each y In CompareRange
            If x = y Then x.Offset(0, 1) = 0
        Next y
    Next x
End Sub

 

Незнам как да направя така че след then да се нулират дублиращите числа, а не да ми се записват в отделна колона

Така ще нулира повтарящите се в колона C

Private Sub CommandButton10_Click()
   Dim CompareRange As Range, x As Range, y As Range
    Set CompareRange = Range("C1:C10")
    For Each x In Selection
        For Each y In CompareRange
            If x.Value = y.Value Then y.Value = 0
        Next y
    Next x
End Sub

Ако искаш да се нулират селектираните данни y.value=0 трябва да се замени с x.value=0

  • Автор
на 10.05.2017 г. в 20:05, TRN написа:

Така ще нулира повтарящите се в колона C

Private Sub CommandButton10_Click()
   Dim CompareRange As Range, x As Range, y As Range
    Set CompareRange = Range("C1:C10")
    For Each x In Selection
        For Each y In CompareRange
            If x.Value = y.Value Then y.Value = 0
        Next y
    Next x
End Sub

Ако искаш да се нулират селектираните данни y.value=0 трябва да се замени с x.value=0

Много благодаря, чудесно, но искам и x i y да се нулират. Как ще стане това?

преди 1 час, Bbt_sm написа:

Много благодаря, чудесно, но искам и x i y да се нулират. Как ще стане това?

If x.Value = y.Value Then y.Value = 0

заменяш с

If x.Value = y.Value Then

  y.Value = 0

  x.value=0

end if

Но, сега се сетих

тогава няма да провери останалите в колоната

Това трябва да работи, пиша го без да съм го проверил

Private Sub CommandButton10_Click()
  Dim CompareRange As Range, x As Range, y As Range

  Dim Mask as boolean
    Set CompareRange = Range("C1:C10")
    For Each x In Selection

     Mask = False
      For Each y In CompareRange        

        if x.Value = y.Value Then

          y.Value = 0

          Mask=True

        end if

       Next y

       if Mask then x.value=0

  Next x
End Sub

Редактирано от TRN (преглед на промените)

  • Автор
преди 3 часа, TRN написа:

If x.Value = y.Value Then y.Value = 0

заменяш с

If x.Value = y.Value Then

  y.Value = 0

  x.value=0

end if

Но, сега се сетих

тогава няма да провери останалите в колоната

Това трябва да работи, пиша го без да съм го проверил

Private Sub CommandButton10_Click()
  Dim CompareRange As Range, x As Range, y As Range

  Dim Mask as boolean
    Set CompareRange = Range("C1:C10")
    For Each x In Selection

     Mask = False
      For Each y In CompareRange        

        if x.Value = y.Value Then

          y.Value = 0

          Mask=True

        end if

       Next y

       if Mask then x.value=0

  Next x
End Sub

Предното работи и нулира всички в колоната. Мноооооооооооого благодаря!

А може ли ако потребителят забрави да селектира колоната за сравнение, да изкача съобщение, да селектира каквото му трябва?

преди 1 час, Bbt_sm написа:

А може ли ако потребителят забрави да селектира колоната за сравнение, да изкача съобщение, да селектира каквото му трябва?

Може, само че в Excel винаги има избрана клетка или някой бутон. 

след Dim Mask добави това

'Ако не е избран/селектиран диапазон
  If TypeName(Selection) <> "Range" Then
   MsgBox "Нямате избран диапазон за сравнение"
   Exit Sub
  End If
  'Проверка Selection
  'Ако са избрани повече диапазони/Areas/ с Ctrl+Клик с мишката
  If Selection.Areas.Count > 1 Then
   MsgBox "Избрани са повече от един диапазон"
   Exit Sub
  End If
  'Ако са избрани данни в няколко колони
  If Selection.Columns.Count > 1 Then
   MsgBox "Избрани са данни в повече от една колона"
   Exit Sub
  End If
  'Ако са избрани данни само в една клетка
  If Selection.Count < 2 Then
   MsgBox "Избрана е само една клетка"
   Exit Sub
  End If

 

Архивирана тема

Темата е твърде стара и е архивирана. Не можете да добавяте нови отговори в нея, но винаги можете да публикувате нова тема, в която да продължи дискусията. Регистрирайте се или влезте във вашия профил за да публикувате нова тема.

Разглеждащи това в момента 0

  • Няма регистрирани потребители разглеждащи тази страница.

Дарение

  • Подкрепи съществуването на форума - направи дарение
    32%
    Дарени 315 € от нужните 1 000 €

Бюлетин

Получавайте известие, когато има важна промяна или новина свързана с форума.

Профил

Навигация

Търсене

Търсене

Конфигуриране на push известия в браузъра

Chrome (Android)
  1. Докоснете иконата на катинар до адресната лента.
  2. Докоснете Разрешения → Известия.
  3. Променете предпочитанията си.
Chrome (Desktop)
  1. Кликнете върху иконата на катинар в адресната лента.
  2. Изберете Настройки на сайта.
  3. Намерете Известия и коригирайте предпочитанията си.