EXCEL - มีสูตรส่งออกและอินพุตผู้ใช้ในเซลล์เดียวกันได้อย่างไร


0

ฉันต้องการความช่วยเหลือจากใครบางคนเนื่องจากฉันเชื่อว่าปัญหานี้ต้องใช้ VB โดยทั่วไปฉันมี CELL (A4) ซึ่งผู้คนจะป้อนค่าเพื่อค้นหาการคำนวณที่เกี่ยวข้องที่แสดงด้านล่าง

อย่างไรก็ตามฉันต้องการเพิ่มฟังก์ชันเพิ่มเติมโดยที่ค่านิยมจะถูกป้อนลงในเซลล์เดียวกันนั้นโดยอัตโนมัติ (A4)

เซลล์ E7 และ E8 จะรับอินพุตและคูณด้วย 960 (E7) หรือ 765 (E8) และถ่ายโอนค่าดังกล่าวไปยังเซลล์ (A4) เพื่อให้สูตรที่เหลืออัปเดตอย่างเหมาะสม

โดยทั่วไปให้ผู้ใช้ใส่ถุงโดยตรงใน A4 หรือป้อนจำนวนภาชนะใน E7 หรือ E8

** ที่นี่ฉันมีปัญหาเพราะเมื่อฉันป้อนสูตรใน A4 มันจะถูกลบเมื่อคุณป้อนค่าโดยตรง

** โปรดทราบว่าผลลัพธ์จาก E7 และ E8 ควรจะแสดง (ใน A4) ตามที่ฉันต้องการ

แผ่นงานของฉัน:

enter image description here


ไม่เซลล์สามารถมีค่าได้ครั้งละหนึ่งค่าเท่านั้น หากคุณต้องการป้อนข้อมูลคุณสามารถแจ้งผู้ใช้ได้ แต่ฉันไม่เข้าใจว่าคุณต้องการทำอะไร
Raystafarian

ทำไมต้องเป็น A4 ทำไมไม่มีสองแถวสำหรับ "กระเป๋า"; อินพุตหนึ่งและหนึ่งเอาต์พุต
James Brewer

ฉันไม่ต้องการเพิ่มเซลล์หรือแถวเพิ่มเติมลงในมาตรฐานที่ใช้งานไปแล้ว ฉันต้องการให้คนใส่ 2 ใน E8 และมีหน้าจอ A4 1530 และการคำนวณตามนั้น สิ่งที่กำลังทำอยู่ตอนนี้คือพวกเขาใช้เครื่องคิดเลขเพื่อคูณมันจากนั้นป้อนด้วยตนเองใน A4 ฉันต้องการแทนที่ด้วยการเพิ่ม E7 & amp; ฟังก์ชั่น E8 มันจะต้องง่ายและเร็วกว่าการทำเครื่องคิดเลขมิฉะนั้นจะไม่ถูกนำมาใช้
Josh

คำตอบ:


4

คุณสามารถใช้ฟังก์ชั่นการเปลี่ยนแปลงแผ่นงานใน vba สิ่งที่ต้องการ

Private Sub Worksheet_Change(ByVal target As Range)

If Intersect(target, Range("e7:e8")) Is Nothing Then Exit sub

Application.enableevents = False
ActiveSheet.range("A4").formula="=if(e7="""",e8*765,e7*960)"
Application.enableevents = True

End Sub

เมื่อใดก็ตามที่แผ่นงานเปลี่ยนจะตรวจสอบว่าเซลล์ที่เปลี่ยนแปลงนั้นเป็น e7 หรือ e8 หรือไม่ ถ้ามันเป็นสูตร

=if(e7="",e8*765,e7*960)

ในเซลล์ A4 หากคุณใส่ค่าในเซลล์ A4 จะคงอยู่จนกว่าคุณจะเปลี่ยน e7 หรือ e8 อีกครั้ง คุณอาจต้องปรับตัวเพื่อให้ได้สิ่งที่คุณต้องการ แต่มีแนวคิดอยู่ที่นั่น

สิ่งนี้จะไปในวัตถุแผ่นงานภายใต้วัตถุ Microsoft Excel ใน vba

แก้ไข:

เพื่อให้สอดคล้องกับความคิดเห็น

รหัสใหม่อันนี้จะทำอะไรถ้าเซลล์มีมูลค่าเพิ่มหรือเปลี่ยนแปลงมันจะไม่ทำงานถ้าคุณลบค่า

จากนั้นจะตรวจสอบว่ามีการแก้ไข e7 หรือไม่ หากเป็น e8 จะถูกลบ หากเราไม่ทราบว่ามีการแก้ไข e8 ดังนั้น e7 จะถูกลบ สูตรยังคงเหมือนเดิม

Private Sub Worksheet_Change(ByVal target As Range)

    If Intersect(target, Range("e7:e8")) Is Nothing Or target.Value = "" Then Exit Sub
        Application.EnableEvents = False

        ActiveSheet.Range("A4").Formula = "=if(e7="""",e8*765,e7*960)"

        If Intersect(target, Range("e7")) Is Nothing Then
           ActiveSheet.Range("e7").ClearContents
        Else
            ActiveSheet.Range("e8").ClearContents
        End If

    Application.EnableEvents = True

End Sub

.............ดีมาก!
Gary's Student

GT webb ขอบคุณฉันจะลอง แต่น่าเสียดายที่ฉันไม่เข้าใจบรรทัดสุดท้ายของคุณ "สิ่งนี้จะไปในวัตถุแผ่นงานภายใต้วัตถุ Microsoft Excel ใน vba" ฉันไปที่แท็บนักพัฒนาซอฟต์แวร์และคลิกที่รหัสดูจากนั้นหน้าต่างใหม่จะเปิดขึ้นและฉันป้อนรหัสที่นั่นหรือไม่ i57.tinypic.com/345k9rb.png
Josh

ใช่นั่นคือสถานที่ที่ถูกต้อง ขึ้นอยู่กับว่าใช้มาโครในที่ใดที่หนึ่งสามารถเก็บไว้ได้ นอกจากนี้ให้สังเกต 4 เครื่องหมายคำพูดย้อนกลับไปข้างหลังตรงกลางสูตร เนื่องจากเครื่องหมายคำพูดถูกนำมาเป็นจุดสิ้นสุดของข้อความใน vba คุณต้องมี 4 ที่นั่นเพื่อพิมพ์ 2 ไปยังเซลล์ รูปภาพของคุณมีเครื่องหมายคำพูดคู่เท่านั้น รหัสของคุณจะทำงานก็ต่อเมื่อมีการเปลี่ยนแปลง e8 (ซึ่งอาจเป็นข้อมูลที่ป้อนหรือลบ)
gtwebb

ใช่ฉันแค่ล้อเล่นกับค่าบางอย่างนั่นคือสิ่งที่ยอดเยี่ยมชายอย่างไรก็ตามการคำนวณใช้งานได้ดีตราบใดที่ทั้ง 2 เซลล์ว่างเปล่าถ้าฉันพิมพ์ 2 บน e7 แต่พิมพ์ 1 บน e8 จะใช้งานได้ฉันรู้ว่าพวกเขาสามารถลบได้ด้วยตนเอง แต่มีวิธีที่จะหลบหลีกสิ่งเหล่านี้ได้หรือไม่ หรือมีการลบเซลล์เมื่อคุณป้อนค่าในอีกอันหนึ่ง? ดังนั้นถ้าฉันป้อน 2 บน E7 ดังนั้น E8 จะล้างค่าและสคริปต์ที่น่าทึ่งของคุณจะทำงานโดยอัตโนมัติ
Josh

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

1

ในธุรกิจมันเป็นเรื่องธรรมดาที่จะต้องการใช้สูตรในการคำนวณค่า แต่ก็ยังอนุญาตให้ผู้ใช้แทนที่สูตรนั้น กรณีพิเศษ.

พูด A4 แทน ค่าใช้จ่ายทั้งหมด และมี:

=D8*G8

ที่ไหน D8 คือต้นทุนต่อหน่วยและ G8 คือปริมาณ

แต่สำหรับลูกค้าพิเศษเราต้องการให้สามารถเสนอราคาลดราคาได้ เราใส่ราคาที่ลดแล้ว H8 และแก้ไขสูตรดังนี้:

=IF(H8<>"",H8,F8*G8)

ดังนั้นถ้าเราต้องการแทนที่มันจะเข้า H8; มิฉะนั้นเราจะจากไป H8 ว่างเปล่า


สิ่งที่จะเกิดขึ้นเบื้องหลังไม่ได้เหรอ? ฉันไม่ต้องการมีเซลล์ป้อนข้อมูลเพิ่มเติมเช่นกัน
Josh

@ Josh แม้ว่าการมีเซลล์เพิ่มเติมดูเหมือนจะยุ่งนิดหน่อย แต่ก็เป็นเรื่องปกติ ผู้คนกลัวที่จะทำลายสูตร ถ้าความจริงบางคนปกป้องเซลล์สูตรจากการถูกแก้ไข
Gary's Student

ใช่ แต่ถ้ามันดูไม่ง่ายพอและไม่มีการเปลี่ยนแปลงมากมาย ผู้คนจะไม่เปลี่ยนแปลงสิ่งที่พวกเขาทำมานานหลายปีซึ่งทวีคูณในเครื่องคิดเลขแล้วป้อนผลลัพธ์บน A4 :(
Josh

0

คุณสามารถใช้ VB เพื่อเปลี่ยนค่าใด ๆ ในระหว่างขั้นตอนการคำนวณ

แต่การทำเช่นนั้นหมายความว่าแมโครจะเปลี่ยนค่าใน A4 และคุณจะต้องเพิ่มสิ่งที่ต้องรู้ว่าไม่ควรอัปเดตค่าในครั้งที่สอง

ในทางทฤษฎีแล้วมันเป็นไปได้ แต่ก็เป็นไปไม่ได้ที่จะทำเช่นนั้น

หากคุณต้องการที่จะมีรายการแบบหล่นลงที่มีค่านิยมคุณไม่จำเป็นต้องไปที่แฟนซี Excel มีฟังก์ชันนี้ในตัวคุณสามารถทำได้ data validation.


ดร็อปดาวน์ไม่ทำงานและมันยุ่งยากเกินไปค่าใน E7 หรือ E8 อาจอยู่ในช่วง 1-1000 นอกจากนี้ฉันรู้ว่ามันค่อนข้างแฟนซี แต่ฉันไม่คิดว่ามันเป็นไปไม่ได้เลย ในความเป็นจริงเป้าหมายของฉันคือการใช้งานได้จริงและใช้งานง่ายเพราะคนที่เหลือใช้มันไม่เชี่ยวชาญคอมพิวเตอร์
Josh

ส่วนที่ทำไม่ได้คือการสร้างสิ่งนี้และทำให้มันทำงานได้ดีสำหรับผู้ใช้
LPChip

ฉันแค่อยากให้พวกเขาป้อนค่าลงในฟิลด์ใหม่ของฉัน E7 หรือ E8 และคำนวณที่เหลือไว้วางใจฉันฉันลองตัวเลือกอื่น ๆ แต่ฉันไม่ใช่เทพโปรแกรมเมอร์ฉันหันไปหาชุมชนเพื่อขอความช่วยเหลือ;)
Josh

เป็นไปได้ไหมที่จะทำให้ A4 ไม่ใช่ฟิลด์ที่ผู้ใช้จะเปลี่ยน? บางทีวางที่ E6 และทำให้ A4 มีสูตรที่คุณต้องการให้จดบันทึกค่าใน E6 ดังที่คนอื่น ๆ ชี้ให้เห็นว่าเป็นวิธีที่ผู้คนทำเพราะนั่นเป็นวิธีเดียวที่จะรักษาได้ VB จะทำให้เป็นเรื่องยากสำหรับคุณถ้าคุณไม่ได้สัมผัสมาก่อน มันเป็นโค้ดไม่กี่บรรทัดและใช้งานได้ดังนั้นโดยทั่วไปจึงไม่อนุญาตให้ใช้ VB
LPChip

นอกจากนี้หากเป็นหน้าที่ของคุณที่ผู้คนจะเล่นกับตัวเลขใน A4 เพื่อค้นหาค่าโดยการเปรียบเทียบผลลัพธ์ทั้งหมดแสดงว่าคุณทำผิด Excel กำลังทำสิ่งที่ตรงกันข้าม คุณระบุเป้าหมายและคำนวณอินพุต
LPChip

0

วิธีการแก้ปัญหาที่ฉันใช้ที่คุณมีเพียงไม่กี่เซลล์ที่ฉันต้องการให้ทั้งการคำนวณและความสามารถในการป้อนค่าเพื่อแทนที่สูตรหรือลบสิ่งที่พวกเขาป้อนและมีงานสูตร

ตั้งค่าแผ่นงานของคุณตามที่คุณต้องการ .. จากนั้นสำหรับเซลล์ที่คุณต้องการแทนที่การตั้งค่าเซลล์ที่เหมือนกันในคอลัมน์ปิดหน้าจอเช่นคอลัมน์ az และตัดและวาง ell ของคุณที่นั่น ในการเข้าแบบพิเศษนี้ให้เปลี่ยนสูตรของคุณ แต่ใช้การทดสอบว่าหากมีการป้อนค่าในเซลล์เดิมหรือไม่

จากนั้นคัดลอกเซลล์นี้เลือกเซลล์ดั้งเดิมของคุณและวางรูปภาพที่เชื่อมโยงพิเศษ

ตอนนี้เลือกรูปภาพและเพิ่มการเชื่อมโยงหลายมิติไปยังเซลล์ด้านล่างโดยตรงใช้ชื่อ ranbe ถ้าคุณคิดว่ามันอาจย้ายเนื่องจากแถวถูกแทรก

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

ลองพิจารณาการเพิ่มรูปแบบที่มีเงื่อนไขบนเซลล์สูตรที่เปลี่ยนแปลงหากมีค่าในเซลล์ที่แสดงสิ่งนี้จะช่วยเตือนให้คุณป้อนค่าด้วยตนเอง

หวังว่าจะช่วยให้รูปแบบการตั้งค่าดูง่ายและทำงานได้โดยไม่ต้องใช้มาโคร

เทอร์รี่

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