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

วิธีย้ายทั้งแถวไปที่ด้านล่างของแผ่นงานที่ใช้งานตามค่าของเซลล์ใน Excel

สำหรับการย้ายทั้งแถวไปที่ด้านล่างของแผ่นงานที่ใช้งานอยู่ตามค่าของเซลล์ใน Excel โปรดลองใช้รหัส VBA ในบทความนี้

ย้ายทั้งแถวไปที่ด้านล่างของแผ่นงานที่ใช้งานตามค่าของเซลล์ด้วยรหัส VBA


ย้ายทั้งแถวไปที่ด้านล่างของแผ่นงานที่ใช้งานตามค่าของเซลล์ด้วยรหัส VBA


ตัวอย่างเช่นภาพหน้าจอด้านล่างที่แสดงหากเซลล์ในคอลัมน์ C มีค่าหนึ่ง "เสร็จสิ้น" ให้ย้ายทั้งแถวไปที่ด้านล่างของแผ่นงานปัจจุบัน กรุณาดำเนินการดังนี้

1 กด อื่น ๆ+ F11 พร้อมกันเพื่อเปิดไฟล์ Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่าง

2 ใน Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่างคลิก สิ่งที่ใส่เข้าไป > โมดูล. จากนั้นคัดลอกและวางโค้ด VBA ด้านล่างลงในหน้าต่าง

รหัส VBA: ย้ายทั้งแถวไปที่ด้านล่างของแผ่นงานที่ใช้งานอยู่ตามค่าของเซลล์

Sub MoveToEnd()
    Dim xRg As Range
    Dim xTxt As String
    Dim xCell As Range
    Dim xEndRow As Long
    Dim I As Long
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg = Application.InputBox("Select range:", "Kutools for Excel", xTxt, , , , , 8)
    If xRg Is Nothing Then Exit Sub
    If xRg.Columns.Count > 1 Or xRg.Areas.Count > 1 Then
        MsgBox " Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
    xEndRow = xRg.Rows.Count + xRg.Row
    Application.ScreenUpdating = False
    For I = xRg.Rows.Count To 1 Step -1
        If xRg.Cells(I) = "Done" Then
           xRg.Cells(I).EntireRow.Cut
           Rows(xEndRow).Insert Shift:=xlDown
        End If
    Next
    Application.ScreenUpdating = True
End Sub

หมายเหตุ: ในรหัส VBA“เสร็จสิ้น” คือค่าเซลล์ที่คุณจะย้ายทั้งแถวตาม คุณสามารถเปลี่ยนได้ตามต้องการ

3 กด F5 เพื่อเรียกใช้รหัสจากนั้นในป๊อปอัป Kutools สำหรับ Excel กล่องโต้ตอบเลือกช่วงคอลัมน์ที่มีค่าบางอย่างจากนั้นคลิก OK ปุ่ม

หลังจากคลิก OK ทั้งแถวที่มีค่า“ เสร็จสิ้น” ในคอลัมน์ที่ระบุจะถูกย้ายไปที่ด้านล่างของช่วงข้อมูลโดยอัตโนมัติ


บทความที่เกี่ยวข้อง:


เครื่องมือเพิ่มประสิทธิภาพการทำงานในสำนักงานที่ดีที่สุด

Kutools สำหรับ Excel ช่วยแก้ปัญหาส่วนใหญ่ของคุณและเพิ่มผลผลิตของคุณได้ถึง 80%

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

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

  • เปิดใช้งานการแก้ไขและอ่านแบบแท็บใน Word, Excel, PowerPoint, ผู้จัดพิมพ์, Access, Visio และโครงการ
  • เปิดและสร้างเอกสารหลายรายการในแท็บใหม่ของหน้าต่างเดียวกันแทนที่จะเป็นในหน้าต่างใหม่
  • เพิ่มผลผลิตของคุณ 50% และลดการคลิกเมาส์หลายร้อยครั้งให้คุณทุกวัน!
ด้านล่าง officetab
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (26)
ได้รับคะแนน 5 จาก 5 · การจัดอันดับ 1
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันจะทำอย่างไรเพื่อให้ kutools เลือกแถวเฉพาะโดยไม่ต้องป้อนข้อมูลจากผู้ใช้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีอานนท์
ฉันขอโทษ ฉันไม่แน่ใจว่าคุณหมายถึงอะไร คงจะดีถ้าคุณสามารถอธิบายอีกครั้งหรือให้ภาพหน้าจอเพื่อแสดงสิ่งที่คุณพยายามจะทำ
ขอบคุณสำหรับความคิดเห็นของคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี Crystal รหัสนี้ใช้งานได้ดี ขอบคุณ ฉันต้องการย้ายแถวทั้งหมดที่มีคำว่า "สมบูรณ์" ในคอลัมน์ D ไปที่ด้านบนสุดของตาราง (แทรกในแถวที่ 3) เป็นไปได้ไหม? จากนั้นฉันต้องการลบแถวทั้งหมดเหล่านี้ซึ่งมี "วันที่เมื่อวาน" ในคอลัมน์ V
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี มันเกือบจะสมบูรณ์แบบสำหรับสิ่งที่ฉันต้องการ ฉันมีส่วนหนึ่งของคำขอเดียวกันกับที่อานนท์ต้องทำให้งานนี้โดยที่ผู้ใช้ไม่ต้องป้อนข้อมูลพร้อมกับสิ่งพิเศษบางอย่าง

ฉันสงสัยว่าเป็นไปได้หรือไม่ที่จะให้คอลัมน์เดียวค้นหาเป็น i4 ถึง i50 และให้ทำงานโดยอัตโนมัติเมื่อเปิดอยู่หรือทุกครั้งที่มีการแก้ไขคอลัมน์ i นอกจากนี้ หากสามารถย้ายแถวไปที่ด้านล่างของแผ่นงานโดยไม่มีแถวว่างระหว่างแถวที่ "เสร็จสิ้น" และแถวที่ "ไม่" ปัจจุบัน หากฉันเลือก i4:i50 และหากฉันมีข้อมูลเพียงแถวที่ 25 เท่านั้น ระบบจะวางแถวที่ "เสร็จสิ้น" จากน้อยไปมากจากแถว 50 แทนที่จะเป็นแถวที่ 25 จำนวนแถวในชีตของฉันเปลี่ยนแปลงตลอดเวลาและไม่ควรไปถึง มากกว่า 50 ขอบคุณสำหรับความช่วยเหลือ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีแบรนดอน
ขออภัยสามารถช่วยคุณได้ ขอบคุณสำหรับความคิดเห็นของคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี มีวิธีปรับแต่งสิ่งนี้เพื่อให้ย้ายแถวไปที่อื่นในแผ่นงานเดียวกันนอกเหนือจากส่วนท้ายหรือไม่ ฉันมีแผ่นงานที่มีข้อมูลคำสั่งซื้อสำหรับคำสั่งซื้อที่ลงวันที่และคำสั่งซื้อที่จะมาถึงซึ่งยังไม่ระบุวันที่ และฉันมีเพื่อที่ว่าเมื่อฉันใส่ "X" ลงในคอลัมน์ A สิ่งต่างๆ จะไฮไลต์และเป็นตัวหนา ขึ้นอยู่กับหมายเลขชิ้นส่วนและสถานที่จัดส่ง ตอนนี้ฉันต้องตัดและวางวันที่ใหม่ (วันที่จัดส่ง) เพื่อให้พอดีกับวันที่ด้านบนสุดโดยเรียงตามวันที่ (ตั้งแต่ 1 ถึงสิ้นเดือน) ฉันสามารถจัดรูปแบบตามเงื่อนไขทุกอย่างจนถึงจุดนี้ได้ แต่ฉันไม่คิดว่าจะย้ายแถวด้วยวิธีนี้ได้ ฉันสงสัยว่า VBA สามารถทำได้หรือไม่ ย้ายแถวเมื่อป้อนวันที่เพื่อให้พอดีกับแถววันที่อื่น ๆ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี วิธีเดียวที่ฉันจะทำให้สิ่งนี้ใช้งานได้คือถ้าฉัน "เรียกใช้" มาโครในหน้าจอย่อยของ Visual Basic เป็นไปได้ไหมที่จะให้โค้ด VBA นี้ทำงานโดยอัตโนมัติเมื่อผู้ใช้พิมพ์ "เสร็จสิ้น" ทุกครั้งที่ฉันได้รับกล่องโต้ตอบ Kutools สำหรับ Excel ปรากฏขึ้นเพื่อถามพารามิเตอร์ที่ฉันขอรหัสเพื่อค้นหา ฉันได้แก้ไขปัญหานี้โดยแทนที่ : xTxt = ActiveSheet.UsedRange.AddressLocal ด้วยพารามิเตอร์ที่ฉันต้องการค้นหาและกดปุ่ม Enter แต่จะสะดวกกว่าหากทำการเปลี่ยนแปลงโดยอัตโนมัติหลังจากป้อน "เสร็จสิ้น" ขอขอบคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีอานนท์
รหัส VBA ด้านล่างสามารถช่วยคุณได้ ได้โปรดลองดู
โปรดคลิกขวาที่แท็บแผ่นงาน (แผ่นงานมีข้อมูลที่คุณจะย้ายไปด้านล่าง) เลือกดูรหัสจากเมนูบริบทและคัดลอกโค้ดด้านล่างลงในหน้าต่างรหัส

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)
'ปรับปรุงโดย Extendoffice 20190925
Dim xRg เป็นช่วง
Dim xIRg เป็นช่วง
Dim xTxt เป็นสตริง
Dim xCell เป็นช่วง
Dim xEndRow ตราบใดที่
หรี่ฉันนาน
Dim xDStr เป็นสตริง
เกี่ยวกับข้อผิดพลาดต่อไป
xDStr = "C:C"
ตั้งค่า xRg = Me.Range(xDStr)
ตั้งค่า xIRg = Application.Intersect(เป้าหมาย, xRg)
ถ้า xIRg ไม่มีอะไร ให้ออกจาก Sub
Application.ScreenUpdating = เท็จ
Application.EnableEvents = เท็จ

ถ้าเป้าหมาย = "เสร็จสิ้น" แล้ว
xEndRow = ActiveSheet.UsedRange.Rows.Count + 1
Target.EntireRow.Cut
แถว(xEndRow).Insert Shift:=xlDown
End If
Application.EnableEvents = จริง
Application.ScreenUpdating = จริง
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีคริสตัล

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

Worksheet_Change ย่อยส่วนตัว (เป้าหมายเป็นช่วง ByVal)

'ปรับปรุงโดย Extendoffice 20200424

Dim xRg เป็นช่วง

Dim xIRg เป็นช่วง

Dim xTxt เป็นสตริง

Dim xCell เป็นช่วง

Dim xEndRow ตราบใดที่

หรี่ฉันนาน

Dim xDStr เป็นสตริง

เกิดข้อผิดพลาด GoTo Err1

xDStr = "C:C"

ตั้งค่า xRg = Me.Range(xDStr)

ตั้งค่า xIRg = Application.Intersect(เป้าหมาย, xRg)

ถ้า xIRg ไม่มีอะไร ให้ออกจาก Sub

Application.ScreenUpdating = เท็จ

Application.EnableEvents = เท็จ



ถ้า Target.Value = "เสร็จสิ้น" แล้ว

'xEndRow = ActiveSheet.UsedRange.Rows.Count + 1

xEndRow = ActiveSheet.UsedRange.SpecialCells(xlCellTypeLastCell).Row + 1

Target.EntireRow.Cut

แถว(xEndRow).Insert Shift:=xlDown

End If

ข้อผิดพลาด 1:

Application.EnableEvents = จริง

Application.ScreenUpdating = จริง

ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันพยายามคัดลอกรหัสนี้ แต่ยังคงแจ้งว่ามีการใช้ฉันอย่างไม่ถูกต้อง
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
เกิดอะไรขึ้นถ้าคุณต้องการย้ายแถวภายใต้คอลัมน์ A และ B; แล้วคอลัมน์ C ควรเก็บไว้หรือไม่ เราควรจะยังใช้ FullyRow หรือไม่?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี เจเรล
ลองโค้ดด้านล่าง หวังว่าฉันจะช่วยได้

ย่อย MoveToEnd()

'ปรับปรุงโดย Extendoffice 20200717

Dim xRg เป็นช่วง

Dim xTxt เป็นสตริง

Dim xCell เป็นช่วง

Dim xEndRow ตราบใดที่

Dim xIntR เป็นจำนวนเต็ม

หรี่ฉันนาน

Dim xWs เป็นเวิร์กชีต

เกี่ยวกับข้อผิดพลาดต่อไป

ถ้า ActiveWindow.RangeSelection.Count > 1 แล้ว

xTxt = ActiveWindow.RangeSelection.AddressLocal

อื่น

xTxt = ActiveSheet.UsedRange.AddressLocal

End If

หนึ่ง:

Set xRg = Application.InputBox("เลือกช่วง:", "Kutools สำหรับ Excel", xTxt, , , , , , 8)

ถ้า xRg ไม่มีอะไร ให้ออกจาก Sub

ถ้า xRg.Columns.Count > 1 หรือ xRg.Areas.Count > 1 แล้ว

MsgBox " เลือกหลายช่วงหรือคอลัมน์แล้ว ", vbInformation, "Kutools for Excel"

ไปที่ lOne

End If

xEndRow = xRg.Rows.Count + xRg.Row

xWs = xRg.เวิร์กชีต

xWs.เปิดใช้งาน

Application.ScreenUpdating = เท็จ

สำหรับฉัน = xRg.Rows.Count To 1 ขั้นตอน -1

ถ้า xRg.Item(I) = "Done" แล้ว

แถว(xEndRow).Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove

xIntR = xRg.Cells(I).Row

ช่วง("A" & xIntR & ":B" & xIntR). เลือก

Selection.Cut

ช่วง("A" & xEndRow).Select

ActiveSheet วาง

xEndRow = xEndRow + 1



End If

ต่อไป

Application.ScreenUpdating = จริง

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



ฉันมีปัญหาในการใช้รหัสที่ให้มาและได้รับข้อผิดพลาดทางไวยากรณ์ ฉันยังใหม่กับความเป็นเลิศและพยายามสอนตนเองในสิ่งที่ฉันต้องการเพื่อทำธุรกิจที่บ้าน ฉันมี id สเปรดชีตสินค้าคงคลังที่ต้องการกำหนดรายการในคอลัมน์เป็น RETIRED หรือไม่ ใช่/ไม่ใช่ และถ้าใช่ รายการเหล่านี้จะย้ายไปที่ด้านล่างของแผ่นงาน ตามลำดับตัวอักษร โดยไม่เว้นที่ว่างในแผ่นงานหลัก เรามีของที่เลิกใช้แล้วและกลับมาผลิตใหม่แบบพิเศษในปริมาณจำกัดและ id เหมือนรายการเหล่านี้ที่เก็บไว้ที่ด้านล่างของแผ่นงานของฉันจนกว่าจะมีวางจำหน่ายอีกครั้ง ขอขอบคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันมีงานที่เจ้านายมอบหมายให้ฉัน ดูเหมือนง่ายพอในตอนแรก แต่ตอนนี้ฉันสับสนว่าจะดำเนินการอย่างไร เรามีใบพยากรณ์ของงานที่เป็นไปได้ และมีคอลัมน์ "ความน่าจะเป็นของคำสั่งซื้อ" เป็น % เขาต้องการให้ฉันตั้งค่า 3 แผ่นงานที่แตกต่างกันด้วย 100-70%, 69%-41 และ 40-0% แนวคิดก็คือเมื่อพิมพ์ข้อมูลลงในแผ่นงานหลัก เมื่อป้อนเปอร์เซ็นต์แล้ว ข้อมูลนั้นจะถูกคัดลอกลงในแผ่นงานที่ตรงกับระดับเปอร์เซ็นต์ไทล์นั้นโดยอัตโนมัติ ฉันทำสิ่งนี้ด้วย IF(และสูตร) ​​อย่างง่าย อย่างไรก็ตาม ฉันต้องเรียงลำดับเพื่อให้เซลล์ว่างว่างและทำให้ดูสะอาดขึ้น จากนั้นเมื่อฉัน sort ถ้าฉันเพิ่มข้อเสนอ Oder Probability ใหม่ในแผ่นงานหลัก ระบบจะไม่ทำงานโดยอัตโนมัติ แสดงโดยไม่ต้อง unsorting แล้วเรียงลำดับอีกครั้ง ฉันขอโทษถ้าคำถามนี้ไม่ใช่ของเธอ แต่มีสตริงของรหัสที่ฉันสามารถใส่ลงไปได้หรือไม่ที่จะจัดการกับปัญหานี้ได้ง่ายขึ้น ค่าเดียวที่กำหนดว่าทั้งแถวถูกย้ายหรือไม่คือ คอลัมน์ K ดูเหมือนง่าย แต่ซับซ้อนสำหรับผู้เริ่มต้น excel นี้ ขอบคุณล่วงหน้าสำหรับความช่วยเหลือของคุณ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
จะทำอย่างไรถ้า "เสร็จสิ้น" เป็นเพียงส่วนหนึ่งของสตริงคอลัมน์ สมมติว่าคอลัมน์ของฉันมีค่าเช่น - XYZDone, ABCDone, 123Done ฯลฯ ฉันสามารถกรองตามสตริงบางส่วน "เสร็จสิ้น" ได้หรือไม่
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีคริสตัล
ขอบคุณสำหรับความช่วยเหลือของคุณ รหัสใช้งานได้ดี แต่แทนที่จะย้ายแถวไปที่ด้านล่างของหน้า ฉันจะย้ายมันไปยังแท็บอื่นเช่นแท็บ "ปิด" ได้อย่างไร
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
ขอโทษที่ตอบช้า
ในรหัสคุณต้องเปลี่ยนบรรทัด "ถ้า xRg.Cells(I) = "Done" แล้ว"ถึง ถ้า xRg.Cells(I) ชอบ "*Done*" แล้ว เพื่อให้เสร็จ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันมีรายการพร้อมกล่องกาเครื่องหมายที่เมื่อเลือกคอลัมน์หนึ่งแล้ว ฉันต้องไปที่ส่วนใดส่วนหนึ่งของสเปรดชีต และหากเลือกอีกคอลัมน์หนึ่ง คอลัมน์นั้นจะสิ้นสุด ฉันลองมาหลายร้อยวิธีแล้ว ใครก็ได้ช่วยด้วย
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี! ฉันเพิ่งซื้อ kutools เพื่อที่ฉันจะได้ *** รหัส vba นี้ไปยังแผ่นงาน excel ของฉัน มันจะเป็นคุณสมบัติที่ยอดเยี่ยมที่จะใช้! คำแนะนำข้างต้นนั้นเรียบง่ายและมีประโยชน์ อย่างไรก็ตาม เมื่อฉันไปถึงขั้นตอนที่คัดลอกและวางโค้ดในหน้าต่างแล้วกด F5 ระบบจะส่งฉันไปที่กล่องเพื่อตั้งชื่อและสร้างมาโคร ฉันทำไปแล้ว แต่จะไม่นำฉันไปที่กล่องโต้ตอบ ดังนั้นฉันจึงสามารถเลือกช่วงของเซลล์ได้ ข้อผิดพลาดในการคอมไพล์ของ "ขั้นตอนภายนอกที่ไม่ถูกต้อง" ปรากฏขึ้น กรุณาช่วย!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
ฉันขอโทษที่ทำให้คุณเข้าใจผิด สามารถใช้รหัสได้ด้วยตัวเองและไม่ต้องซื้อ Kutools หากไม่ต้องการ โปรดส่งอีเมลมาที่ sales@extendoffice.com เพื่อขอเงินคืน
เพื่อให้โค้ดทำงานได้อย่างราบรื่น คุณต้องแน่ใจว่าเคอร์เซอร์อยู่ในหน้าต่างโค้ด (คลิกที่คำใดๆ ในโค้ด) จากนั้นกดปุ่ม F5 คีย์เพื่อเรียกใช้รหัส จากนั้นกล่องโต้ตอบเพื่อเลือกช่วงเซลล์จะปรากฏขึ้น
ขออภัยในความไม่สะดวกอีกครั้ง
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันอีกแล้ว! ฉันคิดรหัสออกแล้ว ฉันได้คัดลอกและวางรหัสด้วยตนเองแทนที่จะใช้ปุ่มคัดลอกที่ด้านบนขวาของหน้าจอ ฉันเปลี่ยน "เสร็จสิ้น" เป็น "x" ฉันได้รันโค้ดในแต่ละเวิร์กชีตแล้ว เมื่อฉันเริ่มป้อน "x" ในเซลล์เหล่านั้นภายในช่วงเซลล์ที่เลือกจากกล่องโต้ตอบ จะไม่มีอะไรเกิดขึ้น (แถวต่างๆ จะไม่เลื่อนลงไปด้านล่างโดยอัตโนมัติ) ฉันยังใหม่กับสิ่งนี้ .... ขอบคุณสำหรับความช่วยเหลือของคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
หากคุณต้องการย้ายแถวไปด้านล่างโดยอัตโนมัติเมื่อป้อนคำที่ระบุ โปรดลองใช้โค้ด VBA ต่อไปนี้
หมายเหตุ: คุณต้องป้อนรหัสลงในหน้าต่างรหัสแผ่นงาน (คลิกขวาที่แท็บแผ่นงานแล้วเลือกดูรหัสจากเมนูบริบท)

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Updated by Extendoffice 20220520
    Dim xRg As Range
    Dim xTxt As String
    Dim xCell As Range
    Dim xEndRow As Long
    Dim I As Long
    On Error Resume Next
    If ActiveWindow.RangeSelection.Count > 1 Then
      xTxt = ActiveWindow.RangeSelection.AddressLocal
    Else
      xTxt = ActiveSheet.UsedRange.AddressLocal
    End If
lOne:
    Set xRg = Range("C2:C18")
    If xRg Is Nothing Then Exit Sub
    If xRg.Columns.Count > 1 Or xRg.Areas.Count > 1 Then
        MsgBox " Multiple ranges or columns have been selected ", vbInformation, "Kutools for Excel"
        GoTo lOne
    End If
    xEndRow = xRg.Rows.Count + xRg.Row
    Application.ScreenUpdating = False
    For I = xRg.Rows.Count To 1 Step -1
        If xRg.Cells(I) = "Done" Then
           xRg.Cells(I).EntireRow.Cut
           Rows(xEndRow).Insert Shift:=xlDown
        End If
    Next
    Application.ScreenUpdating = True
End Sub
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีคริสตัล

ขอบคุณสำหรับรหัสที่ดีทั้งหมด มีวิธีการทำเช่นนี้โดยไม่มี Kutools หรือไม่? ฉันไม่เห็นกล่องโต้ตอบสำหรับเลือกช่วงเซลล์ และไม่ปรากฏขึ้นสำหรับฉัน

ขอขอบคุณ,
Jaz
ได้รับคะแนน 5 จาก 5
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีแจ๊ส
คุณสามารถระบุช่วงของเซลล์ได้โดยตรงในโค้ดโดยไม่ต้องเปิดกล่องโต้ตอบ Kutools เพื่อเลือกช่วง
ในรหัส โปรดแทนที่บรรทัดต่อไปนี้:
Set xRg = Application.InputBox("Select range:", "Kutools for Excel", xTxt, , , , , 8)

กับ:
Set xRg = Range("C2:C13")
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ