ข้อผิดพลาดรันไทม์ '1004';


1

ฉันพยายามคัดลอกสูตรจาก N39 จนถึงแถวสุดท้าย แต่ฉันมักจะได้รับข้อผิดพลาดรันไทม์ '1004' อ้างถึงบรรทัดนี้:

n.formula = "=IF(AND(ISNUMBER(K39),ISNUMBER(L39))=TRUE,IF(ISNUMBER(M39),(K39-L39)*M39,(K39-L39)),"")"

อย่างไรก็ตามเมื่อฉันลองเปลี่ยนสูตรเป็นสิ่งที่ง่ายกว่าเช่น = L39-K39 รหัสก็ใช้งานได้ดี

ฉันขอขอบคุณความช่วยเหลือในการแก้ไขปัญหารหัสของฉัน

นี่คือรหัสของฉัน

Sub FillDownFormula()
Dim LastRow As Long
Dim n As Range

LastRow = Cells(Rows.Count, "I").End(xlUp).Row

Set n = Range("N39:N" & LastRow)
n.formula = "=IF(AND(ISNUMBER(K39),ISNUMBER(L39))=TRUE,IF(ISNUMBER(M39),(K39-L39)*M39,(K39-L39)),"")"

Set n = Nothing

End Sub

ขอบคุณ

คำตอบ:


1

มีข้อผิดพลาดทางไวยากรณ์สองสามข้อในสูตรของคุณ

หนึ่งในนั้นคือการ""ใช้เป็นค่าตอบแทนที่ผิดพลาดของคุณจะยุติn.formulaสตริงของคุณก่อน

เมื่อคุณต้องการใช้อัญประกาศคู่ ( ") ภายในสตริงที่คั่นด้วยเครื่องหมายคำพูดคู่คุณจะต้องหลีกเลี่ยงอัญประกาศภายในโดยเพิ่มมันเป็นสองเท่า

Ex:

myString = "This is a "string"."- จะล้มเหลวหรือที่ myString This is aที่ดีที่สุดจะประกอบด้วย

แก้ไขโดยการหลีกหนีคำพูด:

myString = "This is a ""string""."- This is a "string".จะมี

นอกจากนี้ค่าส่งคืน True ของคุณสำหรับ IF แรกคืออีกงบ IF คำสั่ง IF ด้านในนั้นมีเครื่องหมายจุลภาคของตัวเองเพื่อแยกส่วน แต่เนื่องจากคุณยังไม่ได้ใส่คำสั่งนั้น Excel อาจ / จะคิดว่าเครื่องหมายจุลภาคนั้นเป็นส่วนหนึ่งของคำสั่ง IF ด้านนอก

ดังนั้นแค็ปซูลที่อยู่ใน IF ด้วยวงเล็บ

นี่คือสูตรที่แก้ไข (ยังไม่ได้ทดสอบกับข้อมูล แต่ผ่านการดีบักทันที):

=IF(AND(ISNUMBER(K39),ISNUMBER(L39))=TRUE, (IF(ISNUMBER(M39), (K39-L39)*M39, (K39-L39))), """")

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