Note: The other languages of the website are Google-translated. Back to English

วิธีนับจำนวนคลิกทั้งหมดในเซลล์ที่ระบุใน 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 for Excel แก้ปัญหาส่วนใหญ่ของคุณ และเพิ่มประสิทธิภาพการทำงานของคุณได้ถึง 80%

  • นำมาใช้ใหม่: ใส่อย่างรวดเร็ว สูตรที่ซับซ้อนแผนภูมิ และสิ่งที่คุณเคยใช้มาก่อน เข้ารหัสเซลล์ ด้วยรหัสผ่าน; สร้างรายชื่อผู้รับจดหมาย และส่งอีเมล ...
  • ซุปเปอร์ฟอร์มูล่าบาร์ (แก้ไขข้อความและสูตรหลายบรรทัดได้อย่างง่ายดาย); การอ่านเค้าโครง (อ่านและแก้ไขเซลล์จำนวนมากได้อย่างง่ายดาย); วางลงในช่วงที่กรองแล้ว...
  • ผสานเซลล์ / แถว / คอลัมน์ โดยไม่สูญเสียข้อมูล แยกเนื้อหาของเซลล์ รวมแถว / คอลัมน์ที่ซ้ำกัน... ป้องกันเซลล์ซ้ำ; เปรียบเทียบช่วง...
  • เลือกซ้ำหรือไม่ซ้ำ แถว; เลือกแถวว่าง (เซลล์ทั้งหมดว่างเปล่า); Super Find และ Fuzzy Find ในสมุดงานจำนวนมาก สุ่มเลือก ...
  • สำเนาถูกต้อง หลายเซลล์โดยไม่เปลี่ยนการอ้างอิงสูตร สร้างการอ้างอิงอัตโนมัติ ถึงหลายแผ่น ใส่สัญลักษณ์แสดงหัวข้อย่อย, กล่องกาเครื่องหมายและอื่น ๆ ...
  • แยกข้อความ, เพิ่มข้อความ, ลบตามตำแหน่ง, ลบ Space; สร้างและพิมพ์ผลรวมย่อยของเพจ แปลงระหว่างเนื้อหาของเซลล์และความคิดเห็น...
  • ซุปเปอร์ฟิลเตอร์ (บันทึกและใช้โครงร่างตัวกรองกับแผ่นงานอื่น ๆ ); การเรียงลำดับขั้นสูง ตามเดือน / สัปดาห์ / วันความถี่และอื่น ๆ ตัวกรองพิเศษ โดยตัวหนาตัวเอียง ...
  • รวมสมุดงานและแผ่นงาน; ผสานตารางตามคอลัมน์สำคัญ แยกข้อมูลออกเป็นหลายแผ่น; Batch แปลง xls, xlsx และ PDF...
  • คุณสมบัติที่ทรงพลังมากกว่า 300 รายการ. รองรับ Office/Excel 2007-2021 และ 365 รองรับทุกภาษา ง่ายต่อการปรับใช้ในองค์กรหรือองค์กรของคุณ คุณสมบัติเต็มรูปแบบ ทดลองใช้ฟรี 30 วัน รับประกันคืนเงินภายใน 60 วัน
kte แท็บ 201905

แท็บ Office นำอินเทอร์เฟซแบบแท็บมาที่ Office และทำให้งานของคุณง่ายขึ้นมาก

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มประสิทธิภาพการทำงานของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (31)
ยังไม่มีการให้คะแนน เป็นคนแรกที่ให้คะแนน!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คุณจะ "รีเซ็ต" ตัวนับได้อย่างไร?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เดนนิสที่รัก
โปรดเพิ่มโค้ด VBA ด้านล่างที่ส่วนท้ายของโค้ดต้นฉบับ ทุกครั้งที่คุณเรียกใช้รหัสนี้ การนับจะถูกรีเซ็ตเป็น 0 ขอบคุณสำหรับความคิดเห็นของคุณ

ย่อย ClearCount()
xRgD.Value = ""
xNum = 0
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คริสตัล

คุณสามารถระบุรหัส VBA แบบเต็มสำหรับสิ่งนี้ได้ไหม ฉันจะนำไปใช้กับแถวเดียวได้อย่างไร - แต่ละรายการต้องมีตัวนับของตัวเอง
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
รหัส VBA แบบเต็มมีดังนี้ หากคุณต้องการรีเซ็ตตัวนับ โปรดเรียกใช้รหัส VBA ที่สอง สำหรับการใช้รหัสกับแถวเดียว ขออภัย ยังช่วยคุณไม่ได้

'VBA . แรก
xRgS สาธารณะ xRgD เป็นช่วง
xNum As Long . สาธารณะ
แผ่นงานย่อยส่วนตัว_SelectionChange(ByVal Target As Range)
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
ตั้งค่า xRgS = ช่วง ("E2")
ถ้า xRgS ไม่มีอะไร ให้ออกจาก Sub
ตั้งค่า xRgD = ช่วง ("H2")
ถ้า xRgD ไม่มีอะไร ให้ออกจาก Sub
ถ้า Intersect(xRgS, Target) ไม่มีอะไร ให้ออกจาก Sub
xNum = xNum + 1
xRgD.Value = xNum
ย่อยสิ้นสุด
'VBA . ที่สอง
ย่อย ClearCount()
xRgD.Value = ""
xNum = 0
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณสำหรับรหัส มีประโยชน์มาก
ฉันไม่ใช่โปรแกรมเมอร์และฉันต้องการทราบวิธีการขยายกระบวนการนี้ไปยังทุกบรรทัด กล่าวคือ ไม่ใช่แค่ E2>H2 แต่ยังรวมถึง E3>H3 E4>H4 เป็นต้น
มีรหัสสำหรับสิ่งนี้หรือไม่?


ขอขอบคุณล่วงหน้า!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี กุยโด้

รหัส VBA ด้านล่างสามารถช่วยคุณแก้ปัญหาได้ ได้โปรดลองดู ขอบคุณสำหรับความคิดเห็นของคุณ
แผ่นงานย่อยส่วนตัว_SelectionChange(ByVal Target As Range)
Dim xRgArray เป็นตัวแปร
ติ่มซำ xNum
Dim xStrR, xStrS, xStrD เป็นสตริง
Dim xRgS, xRgD เป็นช่วง

Dim xFNum นานเท่านาน
xRgArray = Array("E2,H2", "E3,H3", "E4,H4", "E5,H5", "E6,H6")
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Cells.count > 1 แล้วออกจาก Sub
สำหรับ xFNum = LBound(xRgArray) ถึง UBound(xRgArray)
xStrR = xRgArray(xFNum)
xStrS = ""
xStrS = ซ้าย (xStrR, 2)
xStrD = ""
xStrD = ขวา (xStrR, 2)
ตั้งค่า xRgS = Nothing
ตั้งค่า xRgS = ช่วง (xStrS)
ถ้า TypeName(xRgS) <> "Nothing" แล้ว
ตั้งค่า xRgD = Nothing
ตั้งค่า xRgD = ช่วง (xStrD)
ถ้า TypeName(xRgD) <> "Nothing" แล้ว
ถ้า TypeName(Intersect(xRgS, Target)) <> "Nothing" แล้ว
xRgD.Value = xRgD.Value + 1
End If
End If
End If
ถัดไป
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณสำหรับสิ่งนี้. ฉันลองแล้วใช้งานได้ แต่มันใช้ได้จนถึงจำนวนเซลล์ที่กำหนดเท่านั้น เราจะขยายรหัสนี้ไปจนถึงจุดสิ้นสุดของเซลล์ได้อย่างไร ตัวอย่างเช่น ฉันพิมพ์โค้ดด้านล่างนี้ และใช้งานได้จนถึง "G9,G9" เท่านั้น ขอบคุณ


แผ่นงานย่อยส่วนตัว_SelectionChange(ByVal Target As Range)
Dim xRgArray เป็นตัวแปร
ติ่มซำ xNum
Dim xStrR, xStrS, xStrD เป็นสตริง
Dim xRgS, xRgD เป็นช่วง

Dim xFNum นานเท่านาน
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")
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Cells.count > 1 แล้วออกจาก Sub
สำหรับ xFNum = LBound(xRgArray) ถึง UBound(xRgArray)
xStrR = xRgArray(xFNum)
xStrS = ""
xStrS = ซ้าย (xStrR, 2)
xStrD = ""
xStrD = ขวา (xStrR, 2)
ตั้งค่า xRgS = Nothing
ตั้งค่า xRgS = ช่วง (xStrS)
ถ้า TypeName(xRgS) <> "Nothing" แล้ว
ตั้งค่า xRgD = Nothing
ตั้งค่า xRgD = ช่วง (xStrD)
ถ้า TypeName(xRgD) <> "Nothing" แล้ว
ถ้า TypeName(Intersect(xRgS, Target)) <> "Nothing" แล้ว
xRgD.Value = xRgD.Value + 1
End If
End If
End If
ถัดไป
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี รูธ
โค้ดนี้ปรับให้เหมาะกับความต้องการของคุณได้ยาก ขอโทษสำหรับเรื่องนั้น.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
รหัสไม่อ่านหมายเลขเซลล์สองหลักเช่น C10 ทำไมถึงได้โปรด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีคริสตัล ฉันลองสูตรนี้แล้ว แต่จะรายงานถึงแถวที่ 9 เท่านั้น ฉันจะไม่นับแถวที่ 10 ขึ้นไป ตัวอย่างเช่น ฉันได้ปรับสูตรข้างต้นเพื่อนับการคลิกแต่ละครั้งใน A4 เพื่อรายงานไปยัง E5 A5 เพื่อรายงานไปยัง E5; A6 เพื่อรายงานไปยัง E6 เป็นต้น ช่วงทั้งหมดคือ A4 ถึง A17 การรายงานทั้งหมดคือ E4 ถึง E17 คุณช่วยได้ไหม นี่คือรหัสที่แก้ไขที่ฉันใช้



แผ่นงานย่อยส่วนตัว_SelectionChange(ByVal Target As Range)
Dim xRgArray เป็นตัวแปร
ติ่มซำ xNum
Dim xStrR, xStrS, xStrD เป็นสตริง
Dim xRgS, xRgD เป็นช่วง

Dim xFNum นานเท่านาน
xRgArray = Array("A4,E4", "A5,E5", "A6,E6", "A7,E7", "A8,E8", "A9,E9", "A10,E10", "A11,E11" ", "A12,E12", "A13,E13", "A14,E14", "A15,E15", "A16,E16", "A17,E17")
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
สำหรับ xFNum = LBound(xRgArray) ถึง UBound(xRgArray)
xStrR = xRgArray(xFNum)
xStrS = ""
xStrS = ซ้าย (xStrR, 2)
xStrD = ""
xStrD = ขวา (xStrR, 2)
ตั้งค่า xRgS = Nothing
ตั้งค่า xRgS = ช่วง (xStrS)
ถ้า TypeName(xRgS) <> "Nothing" แล้ว
ตั้งค่า xRgD = Nothing
ตั้งค่า xRgD = ช่วง (xStrD)
ถ้า TypeName(xRgD) <> "Nothing" แล้ว
ถ้า TypeName(Intersect(xRgS, Target)) <> "Nothing" แล้ว
xRgD.Value = xRgD.Value + 1
End If
End If
End If
ถัดไป
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี เจที
ขอบคุณสำหรับความคิดเห็นของคุณ. มีบางอย่างผิดปกติในรหัสเดิม คุณสามารถลองใช้รหัสใหม่ต่อไปนี้
หมายเลข 4 ในเรื่องโกหกนี้: Set xRight = Target.Offset(0, 4) หมายความว่ามี 4 คอลัมน์ที่จะออฟเซ็ตทางด้านขวาของการอ้างอิงเริ่มต้น (การอ้างอิงเริ่มต้นคือ A4:A17) หลังจากออฟเซ็ตไปทางขวา 4 คอลัมน์ ผลลัพธ์จะออกมาเป็น E4:E17
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updated by Extendoffice 20221010
    Dim xRight As Range

    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Range("A4:A17")) Is Nothing Then Exit Sub
    Set xRight = Target.Offset(0, 4)
    If TypeName(xRight.Value) = "Double" Then
        xRight.Value = xRight.Value + 1
    ElseIf TypeName(xRight.Value) = "Empty" Then
        xRight.Value = 1
    End If

End Sub
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี มีวิธีย้อนกลับการนับจำนวนที่ฉันต้องการหรือไม่? ตัวอย่างเช่น ฉันคลิกไป 5 ครั้ง แต่ฉันต้องการแค่ 3 ครั้ง ฉันจึงเปลี่ยนตัวเลขในเซลล์เป็น 3 และเมื่อฉันคลิกอีกครั้ง จะดำเนินการต่อจาก 3
ขอบคุณสำหรับรหัส!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
ขออภัย ไม่สามารถช่วยคุณในเรื่องนี้ ยินดีที่จะโพสต์คำถามใดๆ เกี่ยวกับ Excel ในฟอรัมของเรา: https://www.extendoffice.com/forum.html. คุณจะได้รับการสนับสนุน Excel เพิ่มเติมจากแฟน ๆ มืออาชีพหรือแฟน ๆ ของ Excel คนอื่นๆ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
Hay alguna manera de programar el conteo de clicks de a la fecha, es decir programar varias celdas para que cuenten con la fecha del día?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คุณระบุรหัสที่อนุญาตให้นับการคลิกจากเซลล์ A2, B2 ถึง A14, B14 ได้หรือไม่ ขอบคุณล่วงหน้า.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีบาร์บาร่า,
คุณหมายถึงการนับจำนวนคลิกทั้งหมดในช่วง A2:B14 หรือไม่ หรือคลิกสำหรับแต่ละเซลล์ในช่วง A2:B14?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
Como zerar เป็น contagem? จะรีเซ็ตคะแนนได้อย่างไร?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
หากคุณต้องการรีเซ็ตตัวนับ โปรดเพิ่มโค้ด VBA ด้านล่างที่ส่วนท้ายของโค้ดเดิมที่ให้ไว้ด้านบน แล้วเรียกใช้

ย่อย ClearCount()
xRgD.Value = ""
xNum = 0
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันกำลังพยายามหาวิธีนับจำนวนครั้งที่มีการคลิกเซลล์ต่างๆ 20 เซลล์ (ควรนับแต่ละเซลล์แยกกัน) ฉันพบคำแนะนำโค้ด VBA ของคุณ พยายามปรับให้เข้ากับความต้องการเฉพาะของฉัน แต่มันใช้ไม่ได้ผล ช่วยแนะนำวิธีเขียน code หน่อยครับ เซลล์ที่ฉันต้องการนับและเซลล์ที่ค่าควรปรากฏ ได้แก่ 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)
นี่คือรหัส VBA ที่ฉันได้ลองโดยไม่ประสบความสำเร็จ:

แผ่นงานย่อยส่วนตัว_SelectionChange(ByVal Target As Range)
Dim xRgArray เป็นตัวแปร
ติ่มซำ xNum
Dim xStrR, xStrS, xStrD เป็นสตริง
Dim xRgS, xRgD เป็นช่วง

Dim xFNum นานเท่านาน
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")
เกี่ยวกับข้อผิดพลาดต่อไป
ถ้า Target.Cells.Count > 1 แล้วออกจาก Sub
สำหรับ xFNum = LBound(xRgArray) ถึง UBound(xRgArray)
xStrR = xRgArray(xFNum)
xStrS = ""
xStrS = ซ้าย (xStrR, 2)
xStrD = ""
xStrD = ขวา (xStrR, 2)
ตั้งค่า xRgS = Nothing
ตั้งค่า xRgS = ช่วง (xStrS)
ถ้า TypeName(xRgS) <> "Nothing" แล้ว
ตั้งค่า xRgD = Nothing
ตั้งค่า xRgD = ช่วง (xStrD)
ถ้า TypeName(xRgD) <> "Nothing" แล้ว
ถ้า TypeName(Intersect(xRgS, Target)) <> "Nothing" แล้ว
xRgD.Value = xRgD.Value + 1
End If
End If
End If
ถัดไป
ย่อยสิ้นสุด

ขอบคุณล่วงหน้าสำหรับความช่วยเหลือของคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี รหัสด้านล่างสามารถช่วยได้ ได้โปรดลองดู ขอขอบคุณ. แผ่นงานย่อยส่วนตัว_SelectionChange(ByVal Target As Range)
Dim xRgS, xRgD เป็นช่วง
Dim xStrRg เป็นสตริง
Dim xFNum เป็นจำนวนเต็ม
ติ่มซำ xArr1, xArr2
ถ้า Target.Cells.Count > 1 แล้วออกจาก 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"
เกี่ยวกับข้อผิดพลาดต่อไป
xArr1 = แยก (xStrRg, ";")
สำหรับ xFNum = 0 ถึง UBound(xArr1)
xArr2 = แยก(xArr1(xFNum), "-")
ตั้งค่า xRgS = ช่วง (xArr2(0))
ตั้งค่า xRgD = ช่วง (xArr2(1))
ถ้าไม่ (Intersect(xRgS, Target) Is Nothing) แล้ว
xRgD.Value = xRgD.Value + 1
End If
ถัดไป
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
รหัสที่แก้ไขข้างต้นนั้นยอดเยี่ยมสำหรับแผ่นงานที่ฉันใช้อยู่ ขอบคุณ แต่ฉันมีคำถามเกี่ยวกับการเพิ่มมาโครเวลาเพื่อให้ทุกวัน (ไม่รวมวันหยุดสุดสัปดาห์) การนับจะย้ายไปที่แถวถัดไปในชีตตัวอย่างเช่น:
แถวที่ 3 - 7/1/2021 "B1-B3; C1-C3; D1-D3"แถวที่ 4 - 7/2/2021 "B1-B4; C1-C4; D1-D4"แถวที่ 5 - 7/3/2021 "B1-B5; C1-C5; D1-D5"
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
Crystal, The above code เหมาะสำหรับแผ่นงานที่ฉันใช้อยู่ ขอบคุณ แต่ฉันมีคำถามเกี่ยวกับการเพิ่มมาโครเวลาเพื่อให้ทุกวัน (ไม่รวมวันหยุดสุดสัปดาห์) การนับจะย้ายไปที่แถวถัดไปในชีตตัวอย่างเช่น:

แถวที่ 3 - 7/1/2021 "B1-B3; C1-C3; D1-D3"
แถวที่ 4 - 7/2/2021 "B1-B4; C1-C4; D1-D4"
แถวที่ 5 - 7/3/2021 "B1-B5; C1-C5; D1-D5"

ถ้าเป็นไปได้? ขอบคุณเคน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ขอบคุณสำหรับรหัส VBA เหล่านี้ พวกเขา เกือบจะ ทำงานตามความต้องการของฉัน ฉันกลัวว่าฉันต้องผ่านตัวเลขสองหลักหมายความว่ามันจะไม่ทำงาน ฉันต้องมี C8 ถึง C110 และการนับที่เกี่ยวข้องคือ L8 ถึง L110 คุณช่วยได้ไหม ขอบคุณมากล่วงหน้า
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี Andy รหัส VBA ต่อไปนี้สามารถช่วยคุณได้ ได้โปรดลองดู แผ่นงานย่อยส่วนตัว_SelectionChange(ByVal Target As Range)
Dim xRgS, xRgD เป็นช่วง
Dim xStrRg เป็นสตริง
Dim xCStr, xVStr เป็นสตริง
Dim xItem เป็นจำนวนเต็ม
xCStr = "C8: C110" 'ช่วงของเซลล์ที่คุณต้องการบันทึกการคลิกของแต่ละเซลล์
xVStr = "L8:L110" 'ช่วงของเซลล์ที่จะวางระเบียนใน
ตั้งค่า xRgS = ช่วง (xCStr)
ตั้งค่า xRgD = ช่วง (xVStr)
ถ้าไม่ (Intersect(xRgS, Target) Is Nothing) แล้ว
xItem = Target.Row - xRgS.Item(1).Row + 1
xRgD.Item(xItem).Value = xRgD.Item(xItem).ค่า + 1
End If
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
มีวิธีย้อนนับจำนวนหรือไม่? ตัวอย่างเช่น ฉันคลิกไป 5 ครั้ง แต่ต้องการแค่ 3 ครั้ง ฉันจึงเปลี่ยนตัวเลขในเซลล์เป็น 3 และเมื่อฉันคลิกอีกครั้ง จะดำเนินต่อไปจาก 3 หรือสามารถกดเซลล์อื่นและลดจำนวนได้ โดย 1 ถ้ามันง่ายกว่า
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
j'aimerai comment je pourrais le nombre de clics sur les cellules D10 à M10 et le retranscrire à la ligne R10 et le faire เท toutes les lignes suvante donc compter les clics sur les cellules D11 à M11 et à le etc R ?

Cordialement
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีครับคุณ DUFOUR
ในการนับจำนวนคลิกจาก D10 ถึง M10 และส่งออกจำนวนคลิกทั้งหมดใน R10 คุณสามารถใช้โค้ด VBA ต่อไปนี้เพื่อดำเนินการให้เสร็จสิ้น
หมายเหตุ: ในรหัสช่วง "D10:M30" หมายความว่าโค้ดใช้งานได้เฉพาะจากแถวที่ 10 ถึงแถวที่ 30 ดังนั้นโปรดระบุแถวที่คุณต้องการนับ
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updated by Extendoffice 20220609
    Dim xNum As Long
    Dim xRgCount, xRg As Range
    
    On Error Resume Next
    If Target.Cells.Count > 1 Then Exit Sub

    Set xRg = Range("D10:M30")
    If Intersect(xRg, Target) Is Nothing Then Exit Sub
    Set xRgCount = Range("R" & Target.Row)
    
    If IsNumeric(xRgCount.Value) Then
        xNum = xRgCount.Value + 1
    Else
        xNum = 1
    End If
    xRgCount.Value = xNum
End Sub
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
โฮลา Muchas gracias por los códigos.
ฉัน gustaría saber cómo contar las veces que se hace clic sobre un enlace en una celda.
ขอบคุณมาก
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี โจเซ่ มาเรีย
หากต้องการนับการคลิกบนไฮเปอร์ลิงก์ คุณสามารถลองใช้โค้ด VBA ต่อไปนี้
สมมติว่าไฮเปอร์ลิงก์อยู่ในคอลัมน์ A และคุณต้องการให้มีการเติมจำนวนการคลิกในเซลล์ที่สอดคล้องกันของคอลัมน์ B (ดังแสดงในภาพหน้าจอด้านล่าง)
กรุณาใส่รหัสต่อไปนี้ในหน้าต่างแผ่นงาน (รหัส)

Private Sub Worksheet_FollowHyperlink(ByVal Target As Hyperlink)
'Updated by Extendoffice 20220805
    Dim Hyperlink As Range
    Set Hyperlink = Target.Range

    Hyperlink.Offset(0, 1) = Hyperlink.Offset(0, 1) + 1
End Sub

https://www.extendoffice.com/images/stories/comments/comment-picture-zxm/clicks_on_a_hyperlink.png
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
ขอบคุณสำหรับรหัสที่น่าทึ่งของคุณ
เมื่อฉันใช้สิ่งนี้ ตัวนับจะเริ่มต้นใหม่ทุกครั้งที่ฉันเปิดไฟล์
มีวิธีแก้ไขปัญหานี้หรือไม่?
ฉันต้องการดูจำนวน thclick ในหน้าต่างเวลาที่ใหญ่ขึ้น

ขอบคุณล่วงหน้า
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีเมห์ราด
ฉันขอโทษที่ตอบคุณช้ามาก รหัสต่อไปนี้สามารถช่วยแก้ปัญหาของคุณได้ ทุกครั้งที่คุณเปิดไฟล์ ตัวนับจะเริ่มนับจากจำนวนที่นับครั้งล่าสุด

Public xRgS, xRgD As Range
'Updated by Extendoffice 20230407
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 = xRgD.Value
    xNum = xNum + 1
    xRgD.Value = xNum
End Sub
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่

ช่องทางอื่นๆ

ลิขสิทธิ์© 2009 - wwwextendoffice.com | สงวนลิขสิทธิ์. ขับเคลื่อนโดย ExtendOffice. | แผนผังเว็บไซต์
Microsoft และโลโก้ Office เป็นเครื่องหมายการค้าหรือเครื่องหมายการค้าจดทะเบียนของ Microsoft Corporation ในสหรัฐอเมริกาและ / หรือประเทศอื่น ๆ
ได้รับการปกป้องโดย Sectigo SSL