เปลี่ยนสเปรดชีต Excel เป็นสูตร [ปิด]


3

ฉันมีสเปรดชีต Excel ที่มีการคำนวณที่ซับซ้อนที่ไม่สำคัญที่จะกลายเป็นแมโครหรือสูตรเซลล์เดียว สเปรดชีตมีอินพุตที่แตกต่างกันประมาณ 10 ตัว (ให้คุณค่าแก่มนุษย์เข้าสู่เซลล์ต่าง ๆ ของสเปรดชีต) จากนั้นสเปรดชีตจะแสดงผลการคำนวณอิสระ 5 ครั้ง (ใน 5 เซลล์ที่แตกต่างกัน) โดยอิงจากอินพุตนั้น การคำนวณของพวกเขากำลังใช้ข้อมูลที่ป้อนไว้ล่วงหน้าในสเปรดชีต (ค่าคงที่ประมาณ 100 รายการ) และทำการค้นหาบางรายการ

ฉันต้องการใช้สเปรดชีตทั้งหมดนี้เป็นสูตรในสเปรดชีตที่แตกต่างกันเพื่อคำนวณชุดของค่าอินพุตและสร้างชุดผลลัพธ์ที่สอดคล้องกัน ลองจินตนาการว่านี่เป็นการสร้างตารางที่แตกต่างกันซึ่งมี 10 คอลัมน์สำหรับตัวแปรอินพุตและ 5 คอลัมน์สำหรับเอาต์พุตจากนั้นคัดลอกอินพุตแต่ละตัวลงในสเปรดชีตอื่นและคัดลอกเอาต์พุตในตารางผลลัพธ์

ตัวอย่างเช่น

  • A1, A2, A3, ... A10 เป็นเซลล์ที่มีคนป้อนค่า
  • ผ่านชุดการคำนวณ B1, B2, B3, B4 และ B5 ได้รับการอัปเดตด้วยสูตรบางสูตร

ฉันสามารถใช้การคำนวณทั้งชุดจาก A1 ... A10 เป็น B1 ... B5 โดยไม่ต้องสร้างสูตรขนาดใหญ่มากหรือมาโคร VBA ได้ไหม

ฉันต้องการมีชุดของค่าอินพุตใน 100 แถวจาก A100, B100, C100, ... J100 เป็นต้นไปจากนั้นทำเวทมนตร์ Excel ที่จะ:

  1. คัดลอกค่าจาก A100 ... J100 ไปยัง A1 ถึง A10
  2. รอให้ผลลัพธ์ปรากฏใน B1 ถึง B5
  3. คัดลอกค่าจาก B1 ถึง B5 เป็น K100 ถึง O100
  4. ทำซ้ำขั้นตอนที่ 1 ถึง 3 สำหรับทุกแถวจาก 100 ถึง 150

4
คำถามของคุณไม่ชัดเจน เราไม่สามารถเข้าใจสิ่งที่คุณหมายถึงสิ่งที่คุณตั้งใจจะทำ แสดงให้เราเห็นสิ่งที่อินพุต, ผลผลิตที่คุณคาดหวังและอื่น ๆ
JMax

ฉันได้อัปเดตบางคำถาม สิ่งที่ฉันต้องการจริงๆคือวิธีใช้ชุดการคำนวณเป็นสูตรเดี่ยว หวังว่านี่จะทำให้คำถามชัดเจนขึ้น
Георги Кременлиев

คำตอบ:


0

คุณสามารถทำได้ด้วยการวิเคราะห์แบบ What-If ของ Excel ฉันไม่คุ้นเคยที่จะพูด คุณ สามารถ ทำได้ด้วยแมโครที่ค่อนข้างง่าย

ที่ฐานแมโครจะทำงานดังนี้:

Open the formula workbook
Set calculation to manual
Loop thru the rows you want to apply the formula to
   Take inputs on current row of result sheet and enter them in the formula workbook
   Force Excel to recalculate
   Take results of formula workbook and enter them in the result sheet
End loop
Turn calculation back on to automatic.

มีสองวิธีในการถ่ายโอนข้อมูลในแถวในสมุดงานผลลัพธ์ของคุณไปยังสมุดงานสูตรในคอลัมน์ วิธีหนึ่งคือการคัดลอก & amp; วางโดยใช้ Transpose เพื่อแปลงแถวเป็นคอลัมน์ส่วนอีกอันคือการใช้ offsets โดยที่ช่วงหนึ่งคุณจะทำการชดเชยคอลัมน์และช่วงอื่น ๆ ที่คุณชดเชยแถว

ตัวอย่างของหลังมีดังนี้

    ' set ranges to top left cell
    Set rngFrom = Workbooks("Result.xls").Worksheets("Sheet1").Cells(iCurrentRow, 1)
    Set rngTo = Workbooks("Formula.xls").Worksheets("Sheet1").Range("A1")

    ' transfer values
    For i = 0 To 9
        rngTo.Offset(RowOffset:=i).Value = rngFrom.Offset(ColumnOffset:=i).Value
    Next i

หากคุณต้องการความช่วยเหลือเฉพาะในการเขียนแมโคร VBA โปรดแจ้งให้เราทราบ


0

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

อย่างไรก็ตามฉันจะพยายามให้คำตอบตามสิ่งที่ฉันคิดว่าฉันเข้าใจ

โดยทั่วไปแล้วฉันคิดว่าคุณเพียงแค่ต้องมีสูตรในเวิร์กบุค 2 เข้าถึงค่าในเวิร์กบุ๊ก 1 และในทางกลับกัน การเชื่อมโยงเวิร์กบุคดูเหมือนจะเป็นทางออกที่ชัดเจนที่สุด มีบทเรียนบางอย่างในเว็บไซต์ของ Microsoft ที่แสดงวิธีการ ( http://office.microsoft.com/en-us/excel-help/create-and-manage-links-to-other-workbooks-HA001054812.aspx , http://office.microsoft.com/en-us/excel-help/create-a-link-to-another-cell-workbook-or-program-HP005199514.aspx )

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


ไม่ใช่สิ่งที่ฉันกำลังมองหา ฉันพยายามอัปเดตคำถามด้วยรายละเอียดเพิ่มเติม
Георги Кременлиев

0

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

1. คัดลอกค่าจาก A100 ... J100 เป็น A1 ถึง A10

ช่วงนั้นมีขนาดไม่เท่ากันคุณหมายถึงอะไรโดยการทำสำเนา ถ้าคุณต้องการค่าที่แน่นอนใน A1 คุณก็แค่ใส่ = A100 ในเซลล์ A1 ในความเป็นจริงคุณไม่จำเป็นต้อง "คัดลอก" เพียงแค่ "อ้างอิง"

2. รอให้ผลลัพธ์ปรากฏใน B1 ถึง B5

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

3. คัดลอกค่าจาก B1 ถึง B5 เป็น K100 ถึง O100 อีกครั้งถ้าคุณต้องการค่าใน K100 จากนั้นคุณใส่ = B1 ลงในเซลล์ K100 และมันจะ "คัดลอก" มัน (อ้างอิงถึง)

4. ทำซ้ำขั้นตอนที่ 1 ถึง 3 สำหรับทุกแถวจาก 100 ถึง 150 เมื่อคุณตั้งค่าแถว 100 แล้วคุณจะมีฟอรัมในแต่ละเซลล์ ตอนนี้เมื่อคุณเลือกเซลล์จะมี "จุดจับ" สีดำขนาดเล็กอยู่ที่มุมล่างขวา คลิกและลากลง สูตรจะเปลี่ยนโดยอัตโนมัติเพื่ออ้างอิงไปยังเซลล์ทั้งในแบบสัมบูรณ์หรือแบบที่สัมพันธ์กัน ตัวอย่างเช่นหากคุณมีข้อมูลบางอย่างในเซลล์ A1 และคุณต้องการให้เซลล์ A100 ถึง A150 ทั้งหมดเพื่อ "เห็น" คุณอาจใส่เซลล์ A100: = $ A $ 1 จากนั้นเซลล์ A101 ก็จะดู A1 และ ดังนั้นเครื่องหมาย $ จะเป็นการอ้างอิงแบบสัมบูรณ์


0

ฉันรู้ว่ามันค่อนข้างช้าและฉันหวังว่าคุณจะประสบความสำเร็จในความพยายามของคุณ

ฉันได้สร้างสเปรดชีตดังกล่าวไม่กี่ บางคนเกี่ยวข้องกับตารางการค้นหามากถึง 14 ตารางและการคำนวณและการแก้ไขกลางสองสามโหล ทั้งหมดเพื่อสร้างตารางตัวเลขเดียว สิ่งนี้อิงจากอินพุตของผู้ใช้หลายตัวตั้งแต่จำนวนจริงไปจนถึงรายการดรอปดาวน์พร้อมการตรวจสอบข้อมูลจำนวนมาก ฉันใช้การค้นหาต่างๆดัชนี () / การจับคู่ () การสืบค้น และฉันไม่ได้ใช้ภาษาสคริปต์ใด ๆ เนื่องจากฉันไม่สนใจคำเตือนอย่างต่อเนื่องที่เกี่ยวข้องกับสเปรดชีตที่เปิดใช้งานมาโคร ฉันสร้างแผ่นงานจำนวนหนึ่งสำหรับการคำนวณระดับกลางและการค้นหาทั้งหมดได้รับการป้องกันด้วยรหัสผ่านและส่วนใหญ่จะถูกซ่อนไว้ มีแผ่นข้อมูลที่มีเซลล์ที่ไม่มีการป้องกันและแผ่นผลลัพธ์

แต่เดิมความหวังของฉันคือการมอบมันให้ใครบางคนและมันจะพาผู้ใช้ผ่านขั้นตอนที่จำเป็น ปรากฎว่าซับซ้อนเกินไปและต้องการความรู้เฉพาะเกี่ยวกับหัวข้อที่แน่นอน

ในที่สุดฉันเชื่อว่าฉันลงทุนกว่า 120 ชั่วโมงและฉันใช้มันเป็นเครื่องมือสำหรับตัวเองเท่านั้น ในการทำให้งานนี้ฉันเพิ่มแผ่นงานอีกหนึ่งแผ่นด้วยรูปแบบ "เทมเพลต" ที่ว่างเพื่อคัดลอก & amp; วางลงในเอกสาร MS Word สิ่งนี้ทำงานได้ดีมาหลายปีแล้ว เมื่อข้อมูลบางอย่างในตารางการค้นหาต้องการการแก้ไขฉันก็ทำการเปลี่ยนแปลงเหล่านั้นและตัวเลขแสดงการเปลี่ยนแปลงเหล่านั้นทันที

ดีที่สุดดั๊ก

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