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

วิธีแทรกแถวอัตโนมัติตามค่าเซลล์ใน Excel

doc-insert-row-based-on-value-1
สมมติว่าคุณมีช่วงของข้อมูลและคุณต้องการแทรกแถวว่างด้านบนหรือด้านล่างค่าที่กำหนดใน Excel โดยอัตโนมัติตัวอย่างเช่นแทรกแถวอัตโนมัติด้านล่างค่าศูนย์ตามภาพด้านล่าง ใน Excel ไม่มีวิธีโดยตรงในการแก้ปัญหานี้ แต่ฉันสามารถแนะนำรหัสมาโครเพื่อให้คุณแทรกแถวอัตโนมัติตามค่าที่แน่นอนใน Excel
แทรกแถวด้านล่างตามค่าของเซลล์ด้วย VBA

แทรกแถวด้านบนตามค่าของเซลล์ด้วย Kutools for Excel ความคิดที่ดี 3

ในการแทรกแถวตามค่าของเซลล์โดยเรียกใช้ VBA โปรดทำตามขั้นตอนด้านล่าง:

1 กด Alt + F11 คีย์พร้อมกันและก Microsoft Visual Basic สำหรับแอปพลิเคชัน หน้าต่างจะปรากฏขึ้น

2 คลิก สิ่งที่ใส่เข้าไป > โมดูลจากนั้นวางโค้ด VBA ด้านล่างลงใน popping โมดูล หน้าต่าง

VBA: แทรกแถวด้านล่างตามค่าของเซลล์

Sub BlankLine()
	'Updateby20150203
	Dim Rng As Range
	Dim WorkRng As Range
	On Error Resume Next
	xTitleId                   = "KutoolsforExcel"
	Set WorkRng                = Application.Selection
	Set WorkRng                = Application.InputBox("Range", xTitleId, WorkRng.Address, Type: = 8)
	Set WorkRng                = WorkRng.Columns(1)
	xLastRow                   = WorkRng.Rows.Count
	Application.ScreenUpdating = False
	For xRowIndex = xLastRow To 1 Step - 1
		Set Rng                   = WorkRng.Range("A" & xRowIndex)
		If Rng.Value = "0" Then
			Rng.Offset(1, 0).EntireRow.Insert Shift: = xlDown
		End If
	Next
	Application.ScreenUpdating = True
End Sub

3 คลิก F5 คีย์หรือ วิ่ง ปุ่มกล่องโต้ตอบจะปรากฏขึ้นและเลือกคอลัมน์ที่มีศูนย์ ดูภาพหน้าจอ:
doc-insert-row-based-on-value-2

4 คลิก OK. จากนั้นแถวว่างจะถูกแทรกด้านล่างค่าศูนย์
doc-insert-row-based-on-value-3

ปลาย:

1. หากคุณต้องการแทรกแถวตามค่าอื่นคุณสามารถเปลี่ยนได้ 0 เป็นค่าที่คุณต้องการใน VBA: ถ้า Rng.Value = "0" แล้ว.

2. หากคุณต้องการแทรกแถวเหนือศูนย์หรือค่าอื่น ๆ คุณสามารถใช้โค้ด vba ด้านล่าง

VBA: แทรกแถวเหนือค่าศูนย์:

Sub BlankLine()
	'Updateby20150203
	Dim Rng As Range
	Dim WorkRng As Range
	On Error Resume Next
	xTitleId                   = "KutoolsforExcel"
	Set WorkRng                = Application.Selection
	Set WorkRng                = Application.InputBox("Range", xTitleId, WorkRng.Address, Type: = 8)
	Set WorkRng                = WorkRng.Columns(1)
	xLastRow                   = WorkRng.Rows.Count
	Application.ScreenUpdating = False
	For xRowIndex = xLastRow To 1 Step - 1
		Set Rng                   = WorkRng.Range("A" & xRowIndex)
		If Rng.Value = "0" Then
			Rng.EntireRow.Insert Shift: = xlDown
		End If
	Next
	Application.ScreenUpdating = True
End Sub

doc-insert-row-based-on-value-4


หากคุณไม่คุ้นเคยกับ VBA คุณสามารถลองได้ Kutools สำหรับ Excel's เลือกเซลล์เฉพาะ ยูทิลิตี้แล้วแทรกแถวด้านบน

Kutools สำหรับ Excel, ที่มีมากกว่า 300 ฟังก์ชั่นที่มีประโยชน์ทำให้งานของคุณง่ายขึ้น 

หลังจากการติดตั้ง Kutools สำหรับ Excel โปรดทำดังนี้:(ดาวน์โหลด Kutools for Excel ฟรีทันที!)

1. เลือกรายการที่คุณต้องการค้นหาเซลล์ที่ต้องการจากนั้นคลิก Kutools > เลือก > เลือกเซลล์เฉพาะ. ดูภาพหน้าจอ:
doc แทรกแถวตามค่า 9

2. ในกล่องโต้ตอบ popping ให้เลือก ทั้งแถว จากนั้นไปที่เลือก เท่ากับ ราคาเริ่มต้นที่ ประเภทเฉพาะ จากนั้นป้อนค่าที่คุณต้องการค้นหาในกล่องข้อความด้านขวา ดูภาพหน้าจอ:
doc แทรกแถวตามค่า 6

3 คลิก Okและกล่องโต้ตอบจะปรากฏขึ้นเพื่อเตือนให้คุณทราบจำนวนแถวที่เลือกเพียงแค่ปิด

4. วางเคอร์เซอร์ไว้ที่แถวที่เลือกไว้หนึ่งแถวและคลิกขวาเพื่อเลือก สิ่งที่ใส่เข้าไป จากเมนูบริบท ดูภาพหน้าจอ:
doc แทรกแถวตามค่า 7

ตอนนี้แถวจะถูกแทรกด้านบนตามค่าเฉพาะ
doc แทรกแถวตามค่า 8


บทความญาติ:


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

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
จัดเรียงความคิดเห็นโดย
ความคิดเห็น (40)
ยังไม่มีการให้คะแนน เป็นคนแรกที่ให้คะแนน!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องการวางเนื้อหาเฉพาะไว้ใต้เซลล์ด้านล่าง ทำอย่างไร? แทนที่จะเป็นแถวว่าง ฉันต้องการแทรกค่าในสองสามคอลัมน์
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันต้องการแทรกหลายแถวตามค่า เช่น ฉันต้องการแทรกแถวว่าง 1 แถวใต้เซลล์ที่มีค่า 2, 2 แถวใต้เซลล์ที่มีค่า 3, 3 แถวใต้เซลล์ที่มีค่า 4 เป็นต้น ได้ไหม โปรดช่วยฉันด้วยสิ่งนี้
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คุณเคยได้รับคำตอบนี้หรือไม่? ฉันกำลังพยายามทำสิ่งเดียวกัน

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

ซับ BlankLine()
'Updateby20150203
Dim Rng เป็นช่วง
Dim WorkRng เป็นช่วง
Dim xInsertNum ตราบเท่าที่
' เมื่อเกิดข้อผิดพลาด ดำเนินการต่อ ต่อไป
xTitleId = "Kutools สำหรับ Excel"
ตั้งค่า WorkRng = Application.Selection
ตั้งค่า WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
ถ้า WorkRng ไม่มีอะไร ให้ออกจาก Sub
xInsertNum = Application.InputBox("จำนวนแถวว่างที่คุณต้องการแทรก ", xTitleId, Type:=1)
ถ้า xInsertNum = False แล้ว
MsgBox " จำนวนแถวว่างที่คุณต้องการแทรก ", vbInformation, xTitleId
ออกจาก Sub
End If
ตั้งค่า WorkRng = WorkRng.Columns(1)
xLastRow = WorkRng.Rows.Count
Application.ScreenUpdating = เท็จ
สำหรับ xRowIndex = xLastRow ถึง 1 ขั้นตอน -1
ตั้งค่า Rng = WorkRng.Range("A" & xRowIndex)
ถ้า Rng.Value = "0" แล้ว
Rng.ปรับขนาด(xInsertNum).EntireRow.Insert Shift:=xlDown
End If
ต่อไป
Application.ScreenUpdating = จริง
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ถ้าคุณต้องการแทรกแถวว่างด้านล่าง ลองทำสิ่งนี้

ซับ BlankLine()
'Updateby20150203
Dim Rng เป็นช่วง
Dim WorkRng เป็นช่วง
Dim xInsertNum ตราบเท่าที่
' เมื่อเกิดข้อผิดพลาด ดำเนินการต่อ ต่อไป
xTitleId = "Kutools สำหรับ Excel"
ตั้งค่า WorkRng = Application.Selection
ตั้งค่า WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
ถ้า WorkRng ไม่มีอะไร ให้ออกจาก Sub
xInsertNum = Application.InputBox("จำนวนแถวว่างที่คุณต้องการแทรก", xTitleId, Type:=1)
ถ้า xInsertNum = False แล้ว
MsgBox " จำนวนแถวว่างที่คุณต้องการแทรก ", vbInformation, xTitleId
ออกจาก Sub
End If
ตั้งค่า WorkRng = WorkRng.Columns(1)
xLastRow = WorkRng.Rows.Count
Application.ScreenUpdating = เท็จ
สำหรับ xRowIndex = xLastRow ถึง 1 ขั้นตอน -1
ตั้งค่า Rng = WorkRng.Range("A" & xRowIndex)
ถ้า Rng.Value = "0" แล้ว
Rng.Offset(1, 0).ปรับขนาด(xInsertNum).EntireRow.Insert Shift:=xlDown
End If
ต่อไป
Application.ScreenUpdating = จริง
ย่อยสิ้นสุด

รายการด้านล่างคือการแทรกแถวด้านบน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ซันนี่ มาโครนี้ทำงานได้ดีสำหรับฉัน ฉันแค่ต้องเปลี่ยนจำนวนแถวเป็น 30 และเปลี่ยน 0 เป็นข้อความ: "การปิดยอดคงเหลือ" แต่ตอนนี้ฉันต้องการคัดลอกวางเซลล์ที่เลือกซึ่งมีความสูง 30 แถวลงใน 30 บรรทัดว่างซึ่งเพิ่งแทรกโดยมาโครนี้ คุณช่วยแนะนำมาโครใหม่ (หรือแก้ไขมาโครนี้) เพื่อคัดลอกและวางช่วงลงในแต่ละ 30 ช่องว่าง ฉันตั้งชื่อช่วงเพื่อคัดลอกและวาง 'เทมเพลต'
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องการความช่วยเหลืออย่างมากในเรื่องนี้ ฉันมี 2 คอลัมน์ ในวันที่ 1 ฉันมีเวลาข้อมูล 01/01/2016 05:00:00 วัน/เดือน/ปี ชั่วโมง/นาที/วินาที และในคอลัมน์ที่ 2 ที่ 2 ข้อมูลที่เกี่ยวข้องกันกับเวลา

ปัญหาของฉันคือฉันต้องการเพิ่มเวลาข้อมูลระหว่างแถวเนื่องจากฉันมีช่องว่างวัน บรรทัดที่ 1 คือ 01/01/2016 และแถวที่ 2 มี เช่น 10/01/2016 ดังนั้นฉันจึงมีเวลา 9 วัน และรหัสนั้นใช้ไม่ได้สำหรับฉัน

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

ค่าแทรกย่อยระหว่าง()
'อัปเดต 20130825
Dim WorkRng เป็นช่วง
Dim Rng เป็นช่วง
Dim outArr เป็น Variant
Dim dic เป็นตัวแปร
ตั้งค่า dic = CreateObject("Scripting.Dictionary")
'เมื่อเกิดข้อผิดพลาด ดำเนินการต่อ ต่อไป
xTitleId = "KutoolsforExcel"
ตั้งค่า WorkRng = Application.Selection
ตั้งค่า WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
num1 = WorkRng.Range("A1")).Value
num2 = WorkRng.Range("A" & WorkRng.Rows.Count).Value
ช่วงเวลา = num2 - num1
ReDim outArr(1 ถึงช่วง + 1, 1 ถึง 2)
สำหรับแต่ละ Rng ในการทำงานRng
dic(Rng.Value) = Rng.Offset(0, 1).Value
ต่อไป
สำหรับ i = 0 ถึงช่วง
outArr(i + 1, 1) = i + num1
ถ้า dic.Exists(i + num1) แล้ว
outArr(i + 1, 2) = dic(i + num1)
อื่น
outArr(i + 1, 2) = ""
End If
ต่อไป
ด้วย WorkRng.Range("A1").Resize(UBound(outArr, 1), UBound(outArr, 2))
.Value = outArr
.เลือก
จบด้วย
ย่อยสิ้นสุด


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

ปัญหาอีกอย่างที่ฉันมีคือข้อมูลเวลาของฉันมีวัน/เดือน/ปีด้วย HH: MM: SS
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
จาก 2 ถึง 3 มันสร้างข้อมูลที่ขาดหายไปที่ฉันต้องการ แต่ค่าของ 03/01/2016 ถูกกำจัดและมีบางเวลาที่ลบสิ่งที่ฉันไม่ต้องการเช่นกัน
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขออภัยรหัส VBA ไม่ได้ช่วยคุณ ฉันไม่พบวิธีการที่สามารถใช้งานได้กับรูปแบบวันที่และเวลา หากคุณพบวิธีแก้ปัญหาในที่สุด คุณช่วยแจ้งให้เราทราบได้ไหม ขอขอบคุณ.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดีอีกครั้ง ซันนี่ ฉันประสบความสำเร็จในการแก้ไขโค้ดนี้ (ฉันเปลี่ยนบรรทัด num1 เป็น A2 และ With WorkRng.Range("A2:A100000")).Resize(UBound(outArr, 1), UBound(outArr, 2) ):


ค่าแทรกย่อยระหว่าง()
'อัปเดต 20130825
Dim WorkRng เป็นช่วง
Dim Rng เป็นช่วง
Dim outArr เป็น Variant
Dim dic เป็นตัวแปร
ตั้งค่า dic = CreateObject("Scripting.Dictionary")
'เมื่อเกิดข้อผิดพลาด ดำเนินการต่อ ต่อไป
xTitleId = "KutoolsforExcel"
ตั้งค่า WorkRng = Application.Selection
ตั้งค่า WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
num1 = WorkRng.Range("A2")).Value
num2 = WorkRng.Range("A" & WorkRng.Rows.Count).Value
ช่วงเวลา = num2 - num1
ReDim outArr(1 ถึงช่วง + 1, 1 ถึง 2)
สำหรับแต่ละ Rng ในการทำงานRng
dic(Rng.Value) = Rng.Offset(0, 1).Value
ต่อไป
สำหรับ i = 0 ถึงช่วง
outArr(i + 1, 1) = i + num1
ถ้า dic.Exists(i + num1) แล้ว
outArr(i + 1, 2) = dic(i + num1)
อื่น
outArr(i + 1, 2) = ""
End If
ต่อไป
ด้วย WorkRng.Range("A2:A100000")).Resize(UBound(outArr, 1), UBound(outArr, 2))
.Value = outArr
.เลือก
จบด้วย
ย่อยสิ้นสุด



ฉันแสดงกราฟให้คุณดู มันใช้งานไม่ได้ 100% เพราะมันไม่ได้สร้างเวลาจาก A1 ถึง A2
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
นี่คือคำถามของฉันและเป็นเรื่องยากมากที่ฉันเดา .. มีรหัส vba ที่เพิ่มแถวใหม่ใต้คอลัมน์ที่กรองแล้วและคัดลอกเพียงสามเซลล์แรกลงในแถวใหม่ที่เพิ่มเข้ามาและทำต่อไปจนกว่าผู้ใช้จะหยุดกดปุ่ม "Enter" และยกเลิกการกรองเซลล์ที่กรองแล้ว?
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
คำถามของคุณค่อนข้างยากและซับซ้อน คุณสามารถตั้งคำถามในฟอรัมของเรา อาจมีใครบางคนสามารถตอบคุณได้ https://www.extendoffice.com/forum.html
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันแค่อยากจะถามวิธีการเพิ่มแถวถ้า codition คือการเพิ่มแถวนั้นควรทำเมื่อเซลล์มีข้อมูลอยู่แล้ว (สำหรับสมุดงาน excel ที่มีแผ่นงานจำนวนมาก :) ขอบคุณ!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
บางทีรหัส vba นี้อาจช่วยคุณได้ มันจะเพิ่มแถวถ้าแถวด้านบนไม่ว่าง

การช่วยเหลือย่อย()
นับสลัวนาน
สำหรับการนับ = ActiveSheet.UsedRange.Rows.count ถึง 1 ขั้นตอน -1
ถ้า Information.IsEmpty(Cells(count, 1)) = False แล้ว Rows(count + 1).Insert
นับต่อไป
ย่อยสิ้นสุด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี ฉันกำลังพยายามใช้รหัสนี้เพื่อป้อนแถวเมื่อตัวเลข 4 หลักแรกในเซลล์เปลี่ยนแปลง (ถ้าเป็นไปได้)

ตัวอย่างเช่น,
2222A
2222B
2223K


บรรทัดจะถูกแทรกหลังจาก 2222B เนื่องจากหมายเลข 3 คือ 3 ไม่ใช่ 2

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

แทรกย่อย_Rows()
หรี่ LR ตราบใดที่ r ตราบใดที่

Application.ScreenUpdating = เท็จ
LR = Range("A" & Rows.Count).End(xlUp).Row
สำหรับ r = LR ถึง 1 ขั้นตอน -1
ถ้า Len(Range("A" & r).Value) > 0 แล้ว
แถว(r).Insert
End If
r ถัดไป
Application.ScreenUpdating = จริง
ย่อยสิ้นสุด

มาจาก https://www.mrexcel.com/forum/excel-questions/548675-adding-blank-line-above-row-non-blank-cell.html
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี สิ่งนี้มีประโยชน์มาก จะเป็นอย่างไรหากฉันต้องการเพิ่มสองบรรทัดด้านล่างและต้องการเพิ่มค่า ตัวอย่างเช่น ฉันต้องการเพิ่มสองบรรทัดหลังค่า 26/04/2019 และสองบรรทัดหลังจาก 03/04/2019 และรายการดำเนินต่อไป ฉันจะเพิ่มใน vba ต่อไปได้อย่างไร ขออภัยฉันยังเป็นมือใหม่ ขอบคุณล่วงหน้า.
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี Safa บางทีคุณสามารถลองใช้ยูทิลิตี้แทรกแถว / คอลัมน์ว่างของ Kutools
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ซับ BlankLine()
'Updateby20150203
Dim Rng เป็นช่วง
Dim WorkRng เป็นช่วง
เกี่ยวกับข้อผิดพลาดต่อไป
xTitleId = "KutoolsforExcel"
ตั้งค่า WorkRng = Application.Selection
ตั้งค่า WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type: = 8)
ตั้งค่า WorkRng = WorkRng.Columns(1)
xLastRow = WorkRng.Rows.Count
Application.ScreenUpdating = เท็จ
สำหรับ xRowIndex = xLastRow ถึง 1 ขั้นตอน - 1
ตั้งค่า Rng = WorkRng.Range("A" & xRowIndex)
ถ้า Rng.Value = "0" แล้ว
Rng.EntireRow.Insert Shift: = xlDown
End If
ต่อไป
Application.ScreenUpdating = จริง
ย่อยสิ้นสุด


ฉันต้องการสิ่งนี้เพื่อทำงานทุกครั้งที่ฉันใส่บางสิ่งในเซลล์ และยังมีตัวแปรอื่นๆ อีกด้วย ที่ฉันหมายถึงคือถ้าฉันใส่ 2 ลงในเซลล์ ฉันต้องการมันเพื่อแทรก 2 แถวและไม่ใช่แค่ 1
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องการมาโครเพื่อเพิ่มแถวตามคอลัมน์ปริมาณ โดยที่ถ้าปริมาณมากกว่า 1 จะแทรกจำนวนแถว -1 หากปริมาณเป็น 5 จะแทรก 4 แถวด้านล่างแล้วกรอกข้อมูลและเปลี่ยนจำนวนที่เรียกจาก 5 เป็น 1 แถวแต่ละแถว ข้ามจำนวน 1 ทั้งหมด
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
บอกรหัสที่ฉันต้องการเพิ่มจำนวนแถวโดยพิจารณาจากค่าของเซลล์ ตัวอย่างเช่น หากเซลล์มีตัวเลข 18 ควรเพิ่ม 18 แถวโดยอัตโนมัติในตำแหน่งที่ฉันต้องการ และส่วนที่เหลือของตาราง/เซลล์ควรเลื่อนลงด้านล่าง
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ขอบคุณมากสำหรับสิ่งนี้ ประหยัดเวลาได้มากจริงๆ เป็นไปได้ไหมที่จะเพิ่มรหัสที่ช่วยให้ฉันสามารถแทรกข้อความในแถวใหม่ ตัวอย่างเช่น ฉันกำลังแทรกแถวใหม่ตามค่าเป้าหมาย 'x' จากนั้นฉันต้องการเพิ่มค่าข้อความ 'y' ในเซลล์ด้านล่างค่าเป้าหมาย 'x' เป็นไปได้ไหม
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี มาโครใช้งานได้สำหรับฉัน แต่มีวิธีใดบ้างที่จะให้ช่วง/พารามิเตอร์ตั้งค่าเป็นคอลัมน์ J เสมอโดยไม่มีกล่องอินพุตปรากฏขึ้นเลย ฉันต้องการให้ข้ามขั้นตอนของช่องป้อนข้อมูลที่กำลังจะเกิดขึ้น นอกจากนี้ ฉันได้ตรวจสอบให้แน่ใจก่อนมาโครนี้โดยตรงว่าบรรทัดสุดท้ายของมาโครก่อนหน้าของฉันคือ Range("J:J") เลือกเพื่อให้แน่ใจว่าคอลัมน์ J ทั้งหมดถูกเลือกไว้แล้ว
นี่คือสิ่งที่ฉันได้ใช้จนถึงตอนนี้

Dim Rng เป็นช่วง
Dim WorkRng เป็นช่วง
เกี่ยวกับข้อผิดพลาดต่อไป
xTitleId = "คลิกตกลงเพื่อดำเนินการต่อ"
ตั้งค่า WorkRng = Application.Selection
ตั้งค่า WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
ตั้งค่า WorkRng = WorkRng.Columns(1)
SendKeys "~"
xLastRow = WorkRng.Rows.Count
Application.ScreenUpdating = เท็จ
สำหรับ xRowIndex = xLastRow ถึง 1 ขั้นตอน -1
ตั้งค่า Rng = WorkRng.Range("A" & xRowIndex)
ถ้า Rng.Value = "New GMS Line" แล้ว
Rng.EntireRow.Insert Shift:=xlDown
End If
ต่อไป


ฉันได้ลองทดลองโดยใช้คำสั่ง SendKeys "~" ระหว่างขั้นตอนบางขั้นตอนแล้วจึงลองให้กด Enter โดยอัตโนมัติเมื่อช่องป้อนข้อมูลปรากฏขึ้น แต่ก็ไม่ได้ผลเช่นกัน ฉันไม่แน่ใจว่าจะใช้คำสั่ง SendKeys ตรงตำแหน่งใดในมาโคร หรือว่ามันจะใช้งานได้กับกล่องอินพุต!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
โปรดช่วยฉันมี data.i มีข้อมูลเวลาหนึ่งเดือนโดยที่ฉันต้องแทรกแถวว่างตามเวลาหลบหนี
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี hr.babu08 ขอโทษที่ตอบช้า ฉันเดาว่าคุณต้องการแทรกแถวว่างหรือทำเครื่องหมายสำหรับข้อมูลลำดับที่ขาดหายไป ถ้าใช่ คุณสามารถลองใช้ Kutools สำหรับ Excel's Find Missing Sequence Number ได้ นี่คือบทแนะนำเกี่ยวกับคุณลักษณะ: https://www.extendoffice.com/product/kutools-for-excel/excel-find-missing-numbers-in-sequence.htmlIf คุณต้องการวิธีอื่นในการแทรกแถวว่างสำหรับลำดับที่หายไป โปรดไปที่:https://www.extendoffice.com/documents/excel/3522-excel-find-missing-dates.html</div>;
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี
มาร์โคนี้สามารถใช้/ดัดแปลงสำหรับเซลล์ที่มีสีได้หรือไม่?
ฉันต้องแทรกอย่างน้อย 10 แถวเหนือส่วนท้ายของแต่ละชุดที่มีสี
thx!
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
ฉันต้องเพิ่มแถวเฉพาะที่มีค่าสำหรับเนื้อหาเซลล์เฉพาะ แต่ไม่แน่ใจว่าต้องทำอย่างไรโดยไม่ต้องทำมากกว่า 3800+ บรรทัดด้วยตนเอง

ตัวอย่าง: A1 = โหนด1
ฉันจำเป็นต้องแทรกแถวและป้อนค่า Scanner
ป้อนแถวอื่นแล้วป้อนค่า Printer
อีกแถวที่มีซีดีค่า
ฯลฯ
ความคิดเห็นนี้ถูกย่อให้เล็กสุดโดยผู้ดำเนินรายการบนเว็บไซต์
สวัสดี คริส นี่คือ VBA ที่สามารถช่วยคุณแทรกสามแถวโดยอัตโนมัติ (สแกนเนอร์ เครื่องพิมพ์ ซีดี) เมื่อค่าเท่ากับ Node1
Sub BlankLine()
'ByExtendoffice
Dim Rng As Range

Dim WorkRng As Range

Dim xRngI As Range

On Error Resume Next

xTitleId = "KutoolsforExcel"

Set WorkRng = Application.Selection

Set WorkRng = Application.InputBox("Select a range", xTitleId, WorkRng.Address, Type:=8)

Set WorkRng = WorkRng.Columns(1)

xLastRow = WorkRng.Rows.Count

Application.ScreenUpdating = False

For xRowIndex = xLastRow To 1 Step -1

  Set Rng = WorkRng.Range("A" & xRowIndex)

  If Rng.Value = "Node1" Then

    Rng.Offset(1, 0).EntireRow.Insert Shift:=xlDown

    Rng.Offset(1, 0).EntireRow.Insert Shift:=xlDown

    Rng.Offset(1, 0).EntireRow.Insert Shift:=xlDown

    Rng.Offset(1, 0).Value = "Scanner"

    Rng.Offset(2, 0).Value = "Printer"

    Rng.Offset(3, 0).Value = "CD"

  End If

Next

Application.ScreenUpdating = True

End Sub

โปรดแจ้งให้เราทราบหากทำงานให้คุณ
มีความคิดเห็นยังไม่มีการโพสต์ที่นี่
โหลดเพิ่มเติม
แสดงความคิดเห็นของคุณ
โพสต์ในฐานะแขก
×
ให้คะแนนโพสต์นี้:
0   ตัวอักษร
สถานที่แนะนำ