วิธีให้สูตรทำงานในพื้นหลังของเซลล์ใน Microsoft Excel และอนุญาตให้ผู้ใช้ป้อนข้อมูลได้อย่างไร


1

ฉันกำลังพยายามสร้างสเปรดชีตที่จะรวบรวมข้อมูลจากหลายเซลล์

โดยพื้นฐานแล้วฉันต้องการเซลล์ A1 ใน Sheet1 และ Sheet2 เพื่อสะท้อนข้อมูลเดียวกันที่ผู้ใช้กำหนดโดยไม่ต้องลบสูตรเมื่อข้อมูลถูกใส่เข้าไป

ฉันต้องการให้ผู้ใช้สามารถป้อนข้อมูลลงในเซลล์เหล่านี้ได้ แต่โดยใช้ '= Sheet2! A1' หรือ '= Sheet1! A1' ฉันกำลังสร้างการอ้างอิงแบบวงกลมและปล่อยให้ผู้ใช้สามารถลบสูตรได้

ใครสามารถแนะนำวิธีการแก้ไขปัญหานี้ได้บ้าง

ขอบคุณ


นี่ไม่ใช่วิธีที่คุณควรใช้ Excel ...
Andre Terra

คำตอบ:


3

คุณไม่สามารถป้อนข้อมูลลงในเซลล์ที่มีสูตรได้ในขณะที่รักษาสูตรไว้ในเวลาเดียวกัน

วิธีแก้ไขคือให้ผู้ใช้ป้อนข้อมูลในเซลล์อื่นจากนั้นอ้างอิงเซลล์นั้น A1 ของทั้งสองแผ่น


0

คุณไม่สามารถทำได้หากไม่มีมาโคร รหัสนี้ควรใช้งานได้:

Private Sub Worksheet_Change(ByVal Target As Range)
    therow = 1
    thecolumn = 1
    Dim wks As Worksheet
    cellrow = Target.Row
    cellcolumn = Target.Column
    If (cellrow = therow And cellcolumn = thecolumn) Then
        Set wks = ThisWorkbook.Worksheets("Sheet2")
        wks.Cells(cellrow, cellcolumn) = Target.Value
    End If
End Sub

เปิดมาโครด้วย ALT + F11 , ดับเบิลคลิก Sheet1 ทางด้านซ้ายและวางรหัสทางด้านขวา รหัสนี้จะถูกดำเนินการใน Sheet 1ดังนั้นจึงคัดลอกการเปลี่ยนแปลงใน Sheet1 A1 ไปยัง Sheet2 A1.

ทุกครั้งที่มีการเปลี่ยนแปลงในเวิร์กชีทแมโครนี้จะถูกเรียกใช้งาน มันตรวจสอบว่าเซลล์ที่เปลี่ยนแปลงอยู่ในแถว 1 และคอลัมน์ 1 (เซลล์ A1) แล้วคัดลอกค่าในเซลล์เดียวกันหรือไม่ Sheet2 .

หากคุณต้องการตรวจสอบการเปลี่ยนแปลงจาก Sheet2 ไปยัง Sheet1 ด้วยแล้ว:

  1. ดับเบิลคลิก Sheet2 ทางด้านซ้าย
  2. วางรหัสทางด้านขวา
  3. เปลี่ยนสาย Set wks = ThisWorkbook.Worksheets("Sheet2") เพื่อระบุปลายทางใหม่: Set wks = ThisWorkbook.Worksheets("Sheet1").

ตอนนี้มาโครนี้ใช้ตัวแปร แถว และ คอลัมน์ เพื่อทำการตัดสินใจคัดลอกค่าไปยังแผ่นงานอื่น ที่จุดเริ่มต้นพวกเขาถูกตั้งค่าเป็น 1 ในบรรทัด therow=1 และ thecolumn=1 ความหมายที่เราสนใจในเซลล์ A1 . และยิ่งกว่านั้นเราจะตรวจสอบว่าเซลล์ที่ถูกแก้ไขนั้นตรงกับค่าเหล่านี้ในบรรทัด If (cellrow = therow And cellcolumn = thecolumn) Then.

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

เปลี่ยนสายการตรวจสอบเป็น If (cellcolumn = thecolumn) Then จะคัดลอกการเปลี่ยนแปลงที่เกิดขึ้นในคอลัมน์ที่มีค่าเหมือนกับตัวแปร thecolumn ไม่ว่าแถวไหนจะเป็น

ตัวอย่างอื่น ๆ :

เปลี่ยนสายการตรวจสอบเป็น If (cellcolumn > thecolumn) Then จะคัดลอกการเปลี่ยนแปลงที่เกิดขึ้นในคอลัมน์ใด ๆ ที่มากกว่าค่าของ thecolumn ไม่ว่าแถวไหนจะเป็น


ขอบคุณมาก! นี่คือสิ่งที่ฉันกำลังมองหา
Sean7147

คำถามที่สองฉันมีรหัสนี้ทำงานในขณะนี้ถ้าฉันต้องทำเช่นนี้ไปยังเซลล์หลายเซลล์ใน 2 แผ่นวิธีการป้อนรหัสใน Macros ได้อย่างไร ข้อมูลพื้นฐานเล็กน้อยฉันมีห้องพัก 1,840 ห้องที่ฉันมีแผนกให้บริการ 2 แผนก ฉันต้องการเซลล์ที่จำเป็นในการสะท้อนข้อมูลลงในแต่ละส่วน สเปรดชีทเพื่อป้องกันการจัดการงานซ้ำซ้อน ในปัจจุบันทั้งสองฝ่าย ใช้สเปรดชีตเดียว แต่เรากำลังมีปัญหาในการลบข้อมูลอื่น ๆ ดังนั้นฉันจึงแยกข้อมูล แต่ทำมิเรอร์สเปรดชีตขอบคุณ
Sean7147

@ Sean7147 ฉันทำการเปลี่ยนแปลงรหัสเล็กน้อย โปรดใช้เวอร์ชันใหม่นี้จากนี้เป็นต้นไป ฉันเพิ่มคำตอบเพื่ออธิบายวิธีที่คุณสามารถปรับเปลี่ยนแมโครเพื่อคัดลอกเซลล์ได้มากขึ้น
jcbermu

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