สร้างมูลค่าเซลล์ตามสูตรใน Excel VBA


0

ฉันมีแผ่นงาน Excel เช่นนี้มีวิธีรับค่าใน C8 โดยใช้ C6 ใน VBA หรือไม่


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

คำตอบ:


3

ไม่ใช่วิธี VBA:

ตั้งชื่อช่วงตามรายการของพวกเขา

ดังนั้น C2 จะเป็นxC3 จะเป็นyและ ...

เมื่อต้องการทำสิ่งนี้อย่างรวดเร็ว:

  1. ไฮไลต์ B2: C4

  2. บนแท็บสูตรคลิก Create from Selection

  3. เลือกLeftจากนั้นกดตกลง

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

นี่จะตั้งชื่อเซลล์ที่เน้นสีในคอลัมน์ C x, y, z ตามลำดับ

ดังนั้นสูตรของคุณใน C6 จะเป็น:

=x*y*1000/z

จากนั้นใน C8:

=FORMULATEXT(C6)

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


หากไม่สามารถใช้งานได้ UDF ต่อไปนี้จะทำสิ่งที่คุณต้องการ:

Function Foo(rng As Range) As String
    Dim MathArr()
    'Add to this array as needed to find all the math functions
    MathArr = Array("*", "-", "+", "/", "(", ")")

    Dim strArr() As String
    Dim temp As String
    Dim strFormula As String
    Dim i As Long

    'Hold two versions of the formula, one manipulate and the other to use.
    strFormula = rng.Formula
    temp = rng.Formula

    'Replace all math functions with space
    For i = LBound(MathArr) To UBound(MathArr)
        strFormula = Replace(strFormula, MathArr(i), " ")
    Next i

    'Split on the space
    strArr = Split(strFormula)

    'iterate and test each part if range
    For i = LBound(strArr) To UBound(strArr)
        If test1(strArr(i)) Then
            'If range then we repace that with the value to the right of that range
            temp = Replace(temp, strArr(i), Range(strArr(i)).Offset(, -1).Value)
        End If
    Next i

    'Return text
    Foo = "=" & temp

End Function

Function test1(reference As String) As Boolean
Dim v As Range

' if the string is not a valid range it will throw and error
On Error Resume Next
Set v = Range(reference) 'try to use referenced range, is address valid?
If Err.Number > 0 Then
    Exit Function 'return false
End If
On Error GoTo 0
test1 = True
End Function

หากไม่มีช่วงที่ถูกตั้งชื่อดังนั้นสูตรใน C6 คือ=C2*C3*1000/C4ฉันใส่นี่ใน C8:

=Foo(C6)

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


ฉันไม่มีคำพูดขอบคุณ จริงๆ. ขอบคุณตัน!
Ravi chawla

อย่างไรก็ตามรหัส VBA ให้ข้อผิดพลาดที่ไม่ได้กำหนด test1
Ravi chawla

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