Excel: วิธีเปลี่ยนมิติแนวตั้งสองมิติเป็นมิติแนวตั้งและแนวนอน


1

ฉันมีตารางที่มีลักษณะเช่นนี้:

  col1 col2  col3                        table1
---------------
01| 1   A  value1A
02| 1   B  value1B
03| 1   Z  value1Z
04| 2   Z  value2Z
05| 3   A  value3A
06| 3   B  value3B
07| 3   Z  value3Z
08| 4   A  value4A
09| 4   B  value4B
10| 4   Z  value4Z
11| 5   Z  value5Z

และฉันต้องการได้รับสิ่งนี้:

      A       B       Z                  table2
 -------------------------
1| value1A value1B value1Z
2|                 value2Z
3| value3A value3B value3Z
4| value4A value4B value4Z
5|                 value5Z

โดยที่สูตรในเซลล์ A1 จาก table2 คำนวณค่า A1 ผ่านค่าที่อยู่ในเซลล์ A1 และ B1 จาก table1 และตำแหน่งที่คอลัมน์ที่สองใน table1 บางครั้งจะถูกเติมด้วยค่าเดียวเท่านั้น (เสมอ Z ในกรณีนั้น) หากไม่เติมด้วยค่าเดียวหนึ่งค่าจะเป็น 3 ค่าเสมอ (A, B และ Z)

จนถึงตอนนี้ฉันไม่พบอะไรที่สะดวก

แก้ไข: ดังที่กล่าวไว้ในความคิดเห็นด้านล่างคุณควรทราบด้วยว่า value1Z เป็นผลรวมของ value1A และ value1B จริง ๆ

แก้ไข 2: ฉันไม่ต้องการใช้ตารางสาระสำคัญ ในกรณีที่เฉพาะเจาะจงของฉันที่ไม่เหมาะสมมาก


ลำดับ 3 1 อยู่ในคอลัมน์จากนั้น 3 2 ลงไปเรื่อย ๆ และคุณมีรูปแบบการทำซ้ำ ABC ในคอลัมน์ถัดไปคงที่หรือไม่
Patkim

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

เพิ่มเติมใน table1 ของคุณค่า Col C 1st คือ 'value1A' แต่ในตารางผลลัพธ์ของคุณคุณแสดงเป็น 'valueA1' นี่เป็นวิธีที่คุณต้องการ (การแลกเปลี่ยนอักขระสองตัวสุดท้าย) หรือเป็นเพียงข้อผิดพลาดที่พิมพ์ผิด?
Patkim

พิมพ์ผิดพลาด. ฉันเพิ่งแก้ไขพร้อมเพิ่มรายละเอียดเพิ่มเติมเกี่ยวกับปัญหาของฉัน
Guillaume

คุณตกลงกับช่องว่างในระหว่างดังที่แสดงใน Table2 ของคุณหรือคุณคาดว่าแต่ละคอลัมน์จะเป็นช่วงที่ต่อเนื่องกันหรือไม่
patkim

คำตอบ:


2

ลองใช้มาโครสั้น ๆ นี้:

Sub MAIN2()
    Dim r As Range, v, numb, letr
    Dim i As Long, j As Long

    Columns(1).SpecialCells(2).Copy Cells(2, 4)
    Columns(4).RemoveDuplicates Columns:=1, Header:=xlNo
    Columns(2).SpecialCells(2).Copy Cells(2, 5)
    Columns(5).RemoveDuplicates Columns:=1, Header:=xlNo

    Set r = Columns(5).SpecialCells(2)
    r.Copy
    Cells(1, 5).PasteSpecial Transpose:=True
    r.Clear

    For Each r In Columns(3).SpecialCells(2)
        v = r.Value
        numb = r.Offset(0, -2).Value
        lett = r.Offset(0, -1).Value

        For i = 2 To Rows.Count
            If Cells(i, 4) = numb Then Exit For
        Next i
        For j = 5 To Columns.Count
            If Cells(1, j) = lett Then Exit For
        Next j

        Cells(i, j) = v
    Next r

End Sub

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

มาโครติดตั้งและใช้งานได้ง่ายมาก:

  1. ALT-F11 เปิดหน้าต่าง VBE ขึ้นมา
  2. ALT-I ALT-M เปิดโมดูลใหม่
  3. วางสิ่งต่างๆลงในและปิดหน้าต่าง VBE

หากคุณบันทึกเวิร์กบุ๊กแมโครจะถูกบันทึกด้วย หากคุณกำลังใช้ Excel รุ่นที่ใหม่กว่าในปี 2003 คุณต้องบันทึกไฟล์เป็น. xlsm แทนที่จะเป็น. xlsx

ในการลบมาโคร:

  1. เปิดหน้าต่าง VBE ขึ้นด้านบน
  2. ล้างรหัสออก
  3. ปิดหน้าต่าง VBE

วิธีใช้มาโครจาก Excel:

  1. ALT-F8
  2. เลือกมาโคร
  3. แตะ RUN

หากต้องการเรียนรู้เพิ่มเติมเกี่ยวกับมาโครโดยทั่วไปโปรดดู:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

และ

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

ต้องเปิดใช้งานแมโครเพื่อให้สิ่งนี้ทำงาน!


สวัสดี ขอบคุณสำหรับการตอบกลับของคุณ! ฉันกลัวว่าคุณเคยใช้รุ่นก่อนหน้าของปัญหาของฉันเมื่อยังมีการพิมพ์ผิด: ไม่มี C ในคอลัมน์ B ควรเป็น Z คุณสามารถแก้ไขโค้ดของคุณได้ไหม?
Guillaume

@Gillailla รหัสจะเหมือนกัน ............... แต่ฉันจะปรับปรุงภาพ
นักเรียนของ Gary

@Guillaume การอัปเดตรูปภาพเสร็จสมบูรณ์
Gary's Student

1

คุณสามารถใช้ตารางสาระสำคัญได้

แก้ไข: นี่เป็นตัวอย่างการทำงาน ไม่แน่ใจว่าทำไมสิ่งนี้ถึงไม่เหมาะกับความต้องการของคุณ? https://excel.solutions/wp-content/uploads/2017/11/Guillaume.xlsx

คุณสามารถเปลี่ยนลำดับคอลัมน์ในตารางเดือยได้อย่างง่ายดายโดยการปรับด้วยตนเองหรือโดยใช้รายการที่กำหนดเอง


โปรดอธิบายให้ละเอียดยิ่งขึ้นปัจจุบันดูเหมือนว่าจะมีความคิดเห็นมากกว่าและไม่ใช่คำตอบ ถ้า OP จะคุ้นเคยกับตารางสาระสำคัญเขาจะไม่ถามคำถามนี้
MátéJuhász

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

1
@Guillaume คุณสามารถสั่งซื้อคอลัมน์และแถวในตารางสาระสำคัญเพียงแค่ลากและวาง (ดู "ตั้งค่าตัวเลือกการจัดเรียงแบบกำหนดเอง" ที่นี่ ) นอกจากนี้นี่ไม่ใช่ข้อกำหนดในคำถามของคุณ โปรดแก้ไขคำถามของคุณและรวมทุกอย่างที่เกี่ยวข้องไว้มิฉะนั้นผู้คนจะเสียเวลาแนะนำโซลูชันที่ "ไม่สะดวก" สำหรับคุณ
MátéJuhász

ขอบคุณMáté ฉันแก้ไขคำถามแล้ว ปัญหาคือมันเป็นบางครั้งหลังจากที่คุณได้รับการตอบกลับที่คุณเห็นว่า "unprecise" คำถามของคุณ :)
กีโยม

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