รหัส VBA ใดที่ฉันควรใช้เพื่อคัดลอกข้อมูลจากคอลัมน์ A ถึง F ในแผ่นงาน Excel ไปยังแผ่นงานอื่นลบด้วยเซลล์ว่าง


0

ฉันต้องการคัดลอกข้อมูลจากรายงานไปยังแผ่นงานใหม่โดยเซลล์จัดเรียงตามที่ฉันต้องการ (น่าเสียดายที่ไม่สามารถจัดรูปแบบรายงานต้นฉบับได้!)

ฉันจัดรูปแบบลง แต่มันสร้างแถวที่ข้อมูลมี 0

ฉันต้องการรหัส VBA เพื่อคัดลอกเซลล์จากคอลัมน์ A: F ไปยังแผ่นงานอื่น ฉันเห็นตัวอย่างของวิธีการทำคอลัมน์เดียว แต่ฉันเป็นสามเณรมากเกินไปที่จะสร้างรหัสสำหรับคอลัมน์อื่น ๆ (และฉันต้องการให้มันดูดีและเรียบร้อย!

Sub copynoblanksA()
'
'

'
Dim sh1 As Worksheet, s2 As Worksheet, i As Long
Dim j As Long, N As Long, r1 As Range

    Set sh1 = Sheets("List1")
    Set sh2 = Sheets("Sheet4")

N = sh1.Cells(Rows.Count, "A").End(xlUp).Row
    j = 1

For i = 1 To N
        Set r1 = sh1.Cells(i, "A")
        If r1.Value <> "" Then
            r1.Copy sh2.Cells(j, "A")
            j = j + 1
        End If
    Next i


End Sub

โปรดทราบว่า superuser.com ไม่ใช่บริการเขียนสคริปต์ / รหัสฟรี หากคุณบอกเราถึงสิ่งที่คุณได้ลองมาแล้ว (รวมถึงสคริปต์ / รหัสที่คุณใช้อยู่) และที่ที่คุณติดอยู่เราสามารถลองช่วยแก้ปัญหาเฉพาะได้ คุณควรอ่าน ฉันจะถามคำถามที่ดีได้อย่างไร .
DavidPostill

ขอบคุณสำหรับข้อมูลฉันลองด้านบนแล้ว แต่คืนค่าข้อมูลที่มี 0 ฉันต้องการย่อข้อมูลลงในมุมมองที่เป็นมิตรกับผู้ใช้มากขึ้น
lucian

คำตอบ:


0

สำหรับปัญหาง่ายๆเหล่านี้วิธีปฏิบัติที่ดีที่สุด:

  • ไปที่แท็บนักพัฒนาแล้วคลิกที่ 'บันทึกแมโคร' (ตั้งชื่อให้แมโคร)
  • เลือกคอลัมน์ที่คุณต้องการคัดลอกคัดลอกไปยังแท็บที่คุณต้องการคัดลอก
  • ไปที่แท็บนักพัฒนาแล้วคลิกที่ 'หยุดการบันทึก'
  • ไปที่เครื่องมือแก้ไขดูที่สคริปต์ใส่ไว้ในรหัสของคุณและปรับให้เข้ากับตัวแปรของคุณ

เพื่อวางเซลล์ แต่ไม่ใช่เซลล์ว่างคุณสามารถใช้รหัสได้:

Range("A1:A20").SpecialCells(xlCellTypeConstants).Copy Destination:=Sheets("newsheet").Range("A1")

ขอบคุณฉันกำลังมองหารหัสที่หยุดเซลล์ที่มีค่าการคัดลอก 0 ฉันคิดว่าฉันอาจจะต้องดูดไข่และต่อมันไว้ในเซลล์เดียว :(
lucian

ตกลงแม้ว่านี่จะเป็นความคิดเห็นที่หยาบคายฉันเพิ่มและตัวอย่างของการคัดลอก / วางที่ลบเซลล์ว่างถ้ามันช่วยได้
Jonathan

0

ตอนนี้ทางออกที่ไม่ใช่ VBA:

= IFERROR (INDEX ($ A $ 1: $ A $ 8, SMALL (IF ($ B $ 1: $ B $ 8 = "0" ROW ($ B $ 1: $ B $ 8), 999999) ROW (A1))), "")

ดัชนีแรก (A1: A8) หากช่วงของข้อมูลที่คุณต้องการย้าย B1: B8 ในช่วงถ้าเป็นเกณฑ์ของคุณ (หาคอลัมน์ที่คุณต้องการให้เป็น 0) คำสั่ง ROW ต้องเป็น 1: N โดยที่ N คือจำนวนแถวทั้งหมดที่คุณมี ROW สุดท้ายจะต้องเป็นที่ที่ข้อมูลของคุณอยู่และจำเป็นต้องเปลี่ยนแปลงตามที่ลากลง นี่เป็นสูตรอาร์เรย์ดังนั้นคุณจะต้องกด ctr + shift + enter

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