ลบเซลล์ทั้งหมดที่มี -1


2

ฉันต้องการเริ่มต้นด้วยข้อมูลเช่นตาราง A ด้านล่างและสร้างตารางใหม่เช่นตาราง B ด้านล่างโดยการลบเซลล์ที่มี-1และยุบแต่ละคอลัมน์เพื่อกำจัดเซลล์ว่าง

ฉันรู้วิธีการทำด้วยตนเอง แต่ฉันจำเป็นต้องอัปเดตตาราง A หลายครั้งและประเมินตาราง B ทุกครั้งดังนั้นฉันจึงกำลังมองหากระบวนการอัตโนมัติ มีการรวมกันของฟังก์ชั่นที่จะอนุญาตหรือไม่

ฉันเขียนมาโครตัวต่อไป มันควรจะทำงานด้วยการรันเพียงครั้งเดียว อย่างไรก็ตามด้วยเหตุผลบางอย่างฉันจำเป็นต้องเรียกใช้หลายครั้งเพื่อให้ได้ผลลัพธ์ตาราง B ในที่สุด อะไรคือสาเหตุของสิ่งนี้?

Sub Macro1()
Dim i As Integer, j As Integer
For i = 1 To 10
  For j = 1 To 5
     If Cells(i, j).Value = -1 Then
         Cells(i, j).Select
         Selection.Delete Shift:=xlUp
     End If
  Next j
Next i
End Sub

ป้อนคำอธิบายรูปภาพที่นี่


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

จำอัตโนมัติต้องการโปรแกรม! ดังนั้นข้อเสนอแนะของฉันคือตัดสินใจก่อนว่าคุณต้องการ VBA หรือ Non-VBA โซลูชันประเภทใด อื่น ๆ คือคุณคิดอย่างไรที่จะแสดงค่าที่ไม่ใช่ -1 ตั้งแต่ D3, B4, A5 และหลายคนอยู่ในแถวที่แตกต่างกัน แต่ในตาราง B, 5 และ 4s อยู่ในแถวเดียว? อย่าตั้งคำถามอย่างสงสัยต้องมีเหตุผลอยู่เบื้องหลัง ตามที่ @ fixer1234 ยังแนะนำให้คุณอธิบายคำถามด้วยวิธีที่เหมาะสมมากจะช่วยให้เราหาทางออกที่ดี
Rajesh S

เปลี่ยนรหัสของคุณเป็นFor i = 10 To 1 step -1
MátéJuhász

ขอบคุณMátéJuhász ที่แก้ไขปัญหาล่าสุด มีประโยชน์มาก
Juanfran

คำตอบ:


1

วนลูปผ่านเซลล์ด้านล่างและลบบางส่วนด้วยการเลื่อนเซลล์อื่นขึ้นมาโครทำให้แมโครไม่ตรวจสอบเซลล์ทั้งหมด

ทางออกที่ง่ายที่นี่คือการเลื่อนขึ้น:

For i = 10 To 1 step -1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.