Note: The other languages of the website are Google-translated. Back to English
Увійти  \/ 
x
or
x
Реєстрація  \/ 
x

or

Як підрахувати загальну кількість кліків у вказаній комірці в Excel?

У цій статті йдеться про підрахунок загальної кількості кліків у певній комірці в Excel.

Підрахуйте загальну кількість кліків у вказаній комірці за допомогою коду VBA


Підрахуйте загальну кількість кліків у вказаній комірці за допомогою коду VBA


Будь ласка, виконайте наступні дії, щоб підрахувати загальну кількість кліків у певній комірці в Excel.

1. На робочому аркуші міститься комірка, для якої потрібно підрахувати її загальну кількість клацань, клацніть правою кнопкою миші вкладку аркуша, а потім клацніть Переглянути код з контекстного меню.

2 В Microsoft Visual Basic для додатків вікно, скопіюйте та вставте нижче код VBA у вікно коду.

Код VBA: підрахуйте загальну кількість кліків у вказаній комірці в Excel

Public xRgS, xRgD As Range
Public xNum As Long
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
    Set xRgS = Range("E2")
    If xRgS Is Nothing Then Exit Sub
    Set xRgD = Range("H2")
    If xRgD Is Nothing Then Exit Sub
    If Intersect(xRgS, Target) Is Nothing Then Exit Sub
    xNum = xNum + 1
    xRgD.Value = xNum
End Sub

примітки: У коді E2 - це комірка, для якої потрібно підрахувати загальну кількість кліків, а H2 - вихідна комірка підрахунку. Будь ласка, змініть їх, як вам потрібно.

3 Натисніть кнопку інший + Q клавіші, щоб закрити Microsoft Visual Basic для додатків вікна.

Відтепер, при натисканні на клітинку E2 на цьому вказаному робочому аркуші, загальна кількість кліків буде автоматично заповнюватися в комірці H2, як показано нижче. Наприклад, якщо натиснути клітинку E2 5 разів, номер 5 відображатиметься в комірці H2.


Найкращі інструменти для підвищення продуктивності офісу

Kutools для Excel вирішує більшість ваших проблем і збільшує продуктивність на 80%

  • Повторне використання: Швидко вставте складні формули, діаграми і все, що ви використовували раніше; Шифрувати комірки з паролем; Створити список розсилки та надсилати електронні листи ...
  • Супер формула бар (легко редагувати кілька рядків тексту та формули); Макет читання (легко читати та редагувати велику кількість комірок); Вставте у відфільтрований діапазон...
  • Об’єднати клітинки / рядки / стовпці без втрати даних; Вміст розділених комірок; Об'єднати повторювані рядки / стовпці... Запобігання дублюючим клітинам; Порівняйте діапазони...
  • Виберіть Повторюваний або Унікальний Рядки; Виберіть Пусті рядки (усі клітинки порожні); Супер знахідка та нечітка знахідка у багатьох робочих зошитах; Випадковий вибір ...
  • Точна копія Кілька клітинок без зміни посилання на формулу; Автоматичне створення посилань на кілька аркушів; Вставте кулі, Прапорці та інше ...
  • Витяг тексту, Додати текст, Видалити за позицією, Видаліть пробіл; Створення та друк проміжних підсумків підкачки; Перетворення вмісту комірок та коментарів...
  • Супер фільтр (зберегти та застосувати схеми фільтрів до інших аркушів); Розширене сортування за місяцем / тижнем / днем, частотою та іншим; Спеціальний фільтр жирним, курсивом ...
  • Поєднайте робочі зошити та робочі аркуші; Об’єднати таблиці на основі ключових стовпців; Розділіть дані на кілька аркушів; Пакетне перетворення xls, xlsx та PDF...
  • Понад 300 потужних функцій. Підтримує Office / Excel 2007-2019 та 365. Підтримує всі мови. Простота розгортання на вашому підприємстві чи в організації. Повна функція 30-денної безкоштовної пробної версії. 60-денна гарантія повернення грошей.
вкладка kte 201905

Вкладка Office забезпечує інтерфейс з вкладками для Office і значно спрощує вашу роботу

  • Увімкніть редагування та читання на вкладках у Word, Excel, PowerPoint, Publisher, Access, Visio та Project.
  • Відкривайте та створюйте кілька документів на нових вкладках того самого вікна, а не в нових вікнах.
  • Збільшує вашу продуктивність на 50% та зменшує сотні клацань миші для вас щодня!
дно офісної таблиці
Say something here...
symbols left.
You are guest
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    yoniweis324@gmail.com · 1 years ago
    Hi, I'm trying to find a way of counting the number of times 20 different cells are being clicked (each one should be counted separately). I came across your VBA code suggestion, tried to adjust it to my specific needs but it won't work. can you please advise how the code should be written? the cells that I would like to count and the cells that the values should appear in are: F12>AU12, F13>AU13, G12>AV12, G13>AV13, H10>AW10, H11>AW11, H12>AW12, H13>AW13, H14>AW14, H15>AW15, I10>AX10, I11>AX11, I12>AX12, I13>AX13, I14>AX14, I15>AX15, J12>AY12, J13>AY13, K12>AZ12, K13>AZ13).
    This is the VBA code I've tried with no success:

    Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim xRgArray As Variant
    Dim xNum
    Dim xStrR, xStrS, xStrD As String
    Dim xRgS, xRgD As Range

    Dim xFNum As Long
    xRgArray = Array("F12,AU12", "F13,AU13", "G12,AV12", "G13,AV13", "H10,AW10", "H11,AW11", "H12,AW12", "H13,AW13", "H14,AW14", "H15,AW15", "I10,AX10", "I11,AX11", "I12,AX12", "I13,AX13", "I14,AX14", "I15,AX15", "J12,AY12", "J13,AY13", "K12,AZ12", "K13,AZ13")
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
    For xFNum = LBound(xRgArray) To UBound(xRgArray)
    xStrR = xRgArray(xFNum)
    xStrS = ""
    xStrS = Left(xStrR, 2)
    xStrD = ""
    xStrD = Right(xStrR, 2)
    Set xRgS = Nothing
    Set xRgS = Range(xStrS)
    If TypeName(xRgS) <> "Nothing" Then
    Set xRgD = Nothing
    Set xRgD = Range(xStrD)
    If TypeName(xRgD) <> "Nothing" Then
    If TypeName(Intersect(xRgS, Target)) <> "Nothing" Then
    xRgD.Value = xRgD.Value + 1
    End If
    End If
    End If
    Next
    End Sub

    Thank you in advance, for your help.
    • To post as a guest, your comment is unpublished.
      crystal · 6 months ago
      Hi,
      The below code can help. Please have a try. Thank you.
      Private Sub Worksheet_SelectionChange(ByVal Target As Range) Dim xRgS, xRgD As Range Dim xStrRg As String Dim xFNum As Integer Dim xArr1, xArr2 If Target.Cells.Count > 1 Then Exit Sub xStrRg = "F12-AU12; F13-AU13; G12-AV12; G13-AV13; H10-AW10; H11-AW11; H12-AW12; H13-AW13; H14-AW14; H15-AW15; I10-AX10; I11-AX11; I12-AX12; I13-AX13; I14-AX14; I15-AX15; J12-AY12; J13-AY13; K12-AZ12; K13-AZ13" On Error Resume Next xArr1 = Split(xStrRg, ";") For xFNum = 0 To UBound(xArr1) xArr2 = Split(xArr1(xFNum), "-") Set xRgS = Range(xArr2(0)) Set xRgD = Range(xArr2(1)) If Not (Intersect(xRgS, Target) Is Nothing) Then xRgD.Value = xRgD.Value + 1 End If Next End Sub
      • To post as a guest, your comment is unpublished.
        KeHGC · 3 months ago
        Crystal, 
        The Above code is great for the sheet I am working with, thank you. But I have a question about adding a time macro so that everyday (excluding weekends) the tally moves to the next row in the sheet for example:

        Row 3 - 7/1/2021 "B1-B3; C1-C3; D1-D3"
        Row 4 - 7/2/2021 "B1-B4; C1-C4; D1-D4"
        Row 5 - 7/3/2021 "B1-B5; C1-C5; D1-D5"

        If this is possible? 
        thx, Ken
      • To post as a guest, your comment is unpublished.
        Ken H · 3 months ago
        The Above corrected code is great for the sheet I am working with, thank you. But I have a question about adding a time macro so that everyday (excluding weekends) the tally moves to the next row in the sheet 
        for example: 

        Row 3 - 7/1/2021 "B1-B3; C1-C3; D1-D3"
        Row 4 - 7/2/2021 "B1-B4; C1-C4; D1-D4"
        Row 5 - 7/3/2021 "B1-B5; C1-C5; D1-D5"
  • To post as a guest, your comment is unpublished.
    Rennan Farias · 2 years ago
    Como zerar a contagem? How to reset the score?
    • To post as a guest, your comment is unpublished.
      crystal · 1 years ago
      Hi,
      If you want to reset the counter, please add the below VBA code at the end of the original code which has been provided above, and then run it.

      Sub ClearCount()
      xRgD.Value = ""
      xNum = 0
      End Sub
  • To post as a guest, your comment is unpublished.
    Barbara · 2 years ago
    Can you provide a code that allows counting clicks from A2, B2 cells through A14, B14 cells. Thanks in advance.
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Hi Barbara,
      Do you mean counting the total clicks in range A2:B14? Or clicks for each cell in range A2:B14?
  • To post as a guest, your comment is unpublished.
    Andrés · 2 years ago
    Hola
    Hay alguna manera de programar el conteo de clicks de acuerdo a la fecha, es decir programar varias celdas para que cuenten con la fecha del día?
  • To post as a guest, your comment is unpublished.
    Demetrius · 2 years ago
    Hello, there is a way to back the counting for any number that I want? For exemple: I'd made 5 clicks, but i just wanted 3. So I change the number in the cell to 3, and when I click again, it continue from 3.
    Thank for the code!
    • To post as a guest, your comment is unpublished.
      crystal · 2 years ago
      Hi,
      Sorry can’t help you with this, welcome to post any question about Excel to our forum: https://www.extendoffice.com/forum.html. You will get more Excel supports from our professional or other Excel fans.
  • To post as a guest, your comment is unpublished.
    Guido · 3 years ago
    Thank you for the code, very useful.
    I'm not a programmer and I would like to know how to extend this process to every line. That is to say, not only E2>H2 but also E3>H3, E4>H4, and so on.
    Is there a code for this?


    Thank you in advance!
    • To post as a guest, your comment is unpublished.
      crystal · 3 years ago
      Hi Guido,

      The below VBA code can help you to solve the problem. Please have a try. Thanks for your comment.
      Private Sub Worksheet_SelectionChange(ByVal Target As Range)
      Dim xRgArray As Variant
      Dim xNum
      Dim xStrR, xStrS, xStrD As String
      Dim xRgS, xRgD As Range

      Dim xFNum As Long
      xRgArray = Array("E2,H2", "E3,H3", "E4,H4", "E5,H5", "E6,H6")
      On Error Resume Next
      If Target.Cells.count > 1 Then Exit Sub
      For xFNum = LBound(xRgArray) To UBound(xRgArray)
      xStrR = xRgArray(xFNum)
      xStrS = ""
      xStrS = Left(xStrR, 2)
      xStrD = ""
      xStrD = Right(xStrR, 2)
      Set xRgS = Nothing
      Set xRgS = Range(xStrS)
      If TypeName(xRgS) <> "Nothing" Then
      Set xRgD = Nothing
      Set xRgD = Range(xStrD)
      If TypeName(xRgD) <> "Nothing" Then
      If TypeName(Intersect(xRgS, Target)) <> "Nothing" Then
      xRgD.Value = xRgD.Value + 1
      End If
      End If
      End If
      Next
      End Sub
      • To post as a guest, your comment is unpublished.
        Ruth · 3 years ago
        Thanks for this. I tried and it worked, however it only worked only until certain number of cells, how can we extend this code until the end of the cells? for example i type in this code below and it only works until "G9,G9". Thanks


        Private Sub Worksheet_SelectionChange(ByVal Target As Range)
        Dim xRgArray As Variant
        Dim xNum
        Dim xStrR, xStrS, xStrD As String
        Dim xRgS, xRgD As Range

        Dim xFNum As Long
        xRgArray = Array("C4,C4", "D4,D4", "E4,E4", "F4,F4", "G4,G4", "C6,C6", "D6,D6", "E6,E6", "F6,F6", "G6,G6", "C7,C7", "D7,D7", "E7,E7", "F7,F7", "G7,G7", "C8,C8", "D8,D8", "E8,E8", "F8,F8", "G8,G8", "C9,C9", "D9,D9", "E9,E9", "F9,F9", "G9,G9", "C10,C10", "D10,D10", "E10,E10", "F10,F10", "G10,G10", "C11,C11", "D11,D11", "E11,E11", "F11,F11", "G11,G11", "C14,C14", "D14,D14", "E14,E14", "F14,F14", "G14,G14", "C15,C15", "D15,D15", "E15,E15", "F15,F15", "G15,G15", "C16,C16", "D16,D16", "E16,E16", "F16,F16", "G16,G16", "C17,C17", "D17,D17", "E17,E17", "F17,F17", "G17,G17", "C18,C18", "D18,D18", "E18,E18", "F18,F18", "G18,G18", "C20,C20", "D20,D20", "E20,E20", "F20,F20", "G20,G20")
        On Error Resume Next
        If Target.Cells.count > 1 Then Exit Sub
        For xFNum = LBound(xRgArray) To UBound(xRgArray)
        xStrR = xRgArray(xFNum)
        xStrS = ""
        xStrS = Left(xStrR, 2)
        xStrD = ""
        xStrD = Right(xStrR, 2)
        Set xRgS = Nothing
        Set xRgS = Range(xStrS)
        If TypeName(xRgS) <> "Nothing" Then
        Set xRgD = Nothing
        Set xRgD = Range(xStrD)
        If TypeName(xRgD) <> "Nothing" Then
        If TypeName(Intersect(xRgS, Target)) <> "Nothing" Then
        xRgD.Value = xRgD.Value + 1
        End If
        End If
        End If
        Next
        End Sub
        • To post as a guest, your comment is unpublished.
          crystal · 3 years ago
          Hi Ruth,
          The code is hard to optimized for meeting your needs. Sorry about that.
          • To post as a guest, your comment is unpublished.
            dan · 7 months ago
            the code doesn't read double digit cell number ie C10 why is this please

  • To post as a guest, your comment is unpublished.
    Dennis · 3 years ago
    How can you "reset" the counter?
    • To post as a guest, your comment is unpublished.
      crystal · 3 years ago
      Dear Dennis,
      Please add the below VBA code at the end of the original code. Every time you run this code, the counting will be reset to 0. Thank you for your comment.

      Sub ClearCount()
      xRgD.Value = ""
      xNum = 0
      End Sub
      • To post as a guest, your comment is unpublished.
        hiddenxyz@yahoo.com · 1 years ago
        Crystal,

        Can you provide the full VBA code - for this? also how would I apply it to a single row - each needing its own counter?
        • To post as a guest, your comment is unpublished.
          crystal · 1 years ago
          Hi,
          The full VBA code is as follows. If you want to reset the counter, please run the second VBA code. For applying the code to a single row, sorry can't help you yet.

          'The first VBA
          Public xRgS, xRgD As Range
          Public xNum As Long
          Private Sub Worksheet_SelectionChange(ByVal Target As Range)
          On Error Resume Next
          If Target.Cells.Count > 1 Then Exit Sub
          Set xRgS = Range("E2")
          If xRgS Is Nothing Then Exit Sub
          Set xRgD = Range("H2")
          If xRgD Is Nothing Then Exit Sub
          If Intersect(xRgS, Target) Is Nothing Then Exit Sub
          xNum = xNum + 1
          xRgD.Value = xNum
          End Sub
          'The second VBA
          Sub ClearCount()
          xRgD.Value = ""
          xNum = 0
          End Sub