RSS

Category Archives: Rows

การเปรียบเทียบข้อมูลจาก 2 ชีทแล้วนำผลต่างไปแสดงในชีทที่ 3

Light bulb การนำข้อมูลจาก 2 ชีทมาเปรียบเทียบกันแล้วสรุปข้อมูลที่ต่างกันมาไว้ในชีทที่ 3 วิธีหนึ่งที่สามารถทำได้และไม่ยุ่งยากลำบากนักก็โดยใช้ PivotTable ซึ่งควรนำข้อมูลทั้งสองชีทมาต่อกันก่อนแล้วเพิ่มคอลัมน์ที่ระบุว่าข้อมูลใดเป็นของชีทเมื่อทำ PivotTable แล้วจะสามารถทราบได้ว่าข้อมูลที่แตกต่างกันระหว่าง 2 ชีทคือข้อมูลใดบ้าง

สำหรับการสรุปผลต่างของข้อมูลแล้วแสดงรายการข้อมูลที่ต่างกันด้วยสูตรดูเหมือนจะเป็นเรื่องยากลำบากที่จะทำเช่นนี้ แต่ก็ไม่เกินความสามารถของ Excel โดยไม่ต้องพึ่งพา VBA แต่อย่างใด แต่จะมีหลายลำดับขั้นตอน ดังตัวอย่างตามภาพด้านล่างซึ่งเป็นข้อมูลของ Sheet1, Sheet2 และ Sheet3 ซึ่งเป็นชีทสรุปข้อมูล

ภาพข้อมูลใน Sheet1

image

ภาพข้อมูลใน Sheet2

image

ภาพการสรุปผลต่างของข้อมูลระหว่าง Sheet1 กับ Sheet2

image

จากภาพด้านบนจะเป็นการหาผลต่างระหว่าง 2 ชีทโดยยึดค่าในคอลัมน์ A เป็นหลัก เราสามารถเขียนสูตรที่ Sheet3 ได้ดังนี้ครับ

  1. ที่เซลล์ G1:G2 คีย์ ไม่มีในชีท1, ไม่มีในชีท2 ตามลำดับ
  2. ที่เซลล์ H1 คีย์สูตร
    =SUM(IF(ISNA(MATCH(sheet2!A2:A117,sheet1!A2:A119,0)),1))
    Ctrl+Shift+Enter
  3. ที่เซลล์ H2 คีย์สูตร
    =SUM(IF(ISNA(MATCH(sheet1!A2:A119,sheet2!A2:A117,0)),1))
    Ctrl+Shift+Enter
  4. ที่เซลล์ H3 คีย์สูตร
    =SUM(H1:H2)
    Enter
  5. ที่เซลล์ I1 คีย์สูตร
    =SUM(H$1:H1)-H1+1
    Enter > Copy ไปยัง I2
  6. ที่เซลล์ E3 คีย์สูตร
    =IF(ROWS(E$3:E3)>$H$3,””,LOOKUP(ROWS(E$3:E3),$I$1:$I$2,$G$1:$G$2))
    Enter > Copy ลงด้านล่าง
  7. ที่เซลล์ B3 คีย์สูตร
    =IF(ROWS(B$3:B3)>$H$3,””,CHOOSE(MATCH($E3,$G$1:$G$2,0),INDEX(sheet1!B$2:B$119,SMALL(IF(ISNA(MATCH(sheet2!$A$2:$A$117,sheet1!$A$2:$A$119,0)),ROW(sheet2!$A$2:$A$117)-ROW(sheet2!$A$2)+1),COUNTIF($E$3:$E3,$E3))),INDEX(sheet1!B$2:B$119,SMALL(IF(ISNA(MATCH(sheet1!$A$2:$A$119,sheet2!$A$2:$A$117,0)),ROW(sheet1!$A$2:$A$119)-ROW(sheet1!$A$2)+1),COUNTIF($E$3:$E3,$E3)))))
    Ctrl+Shift+Enter > Copy ไปทางขวาและลงด้านล่าง

การสรุปผลต่างออกมาลักษณะนี้จะช่วยลดเวลาในการตรวจสอบข้อมูลด้วยสายตาและลดความผิดพลาดลงได้ครับ Thumbs up

 
Leave a comment

Posted by on 28/04/2013 in Choose, If, Index, Lookup, Match, Row, Rows, Small, Sum

 

การค้นหาบางอักขระในข้อความ

Smile สำหรับการค้นหาบางอักขระในข้อความ โดยไม่คำนึงว่าว่าอักขระนั้นจะมีจำนวนเท่าใดและอยู่ส่วนใดของข้อความ เราสามารถใช้สูตรมาช่วยค้นหาได้ครับ

ยกตัวอย่างเช่น มีรายชื่อตัวยาอยู่ในช่วงเซลล์ A2:A10 ต้องการคีย์ค้นหาในเซลล์ C2 แค่บางอักขระแล้วให้แสดงรายชื่อตัวยาออกมาในเซลล์ D2 เป็นต้นไป

เราสามารถเขียนสุตรได้ตามด้านล่างครับ

  1. ที่ C2 คีย์คำค้นตามต้องการ
  2. คีย์สูตรที่ D2 ตามด้านล่าง
    =IFERROR(INDEX($A$2:$A$10,SMALL(IF(MMULT(ISNUMBER(SEARCH(MID($C$2,TRANSPOSE(ROW(INDIRECT(“1:”&LEN($C$2)))),1),$A$2:$A$10))+0,LEN(MID($C$2,ROW(INDIRECT(“1:”&LEN($C$2))),1)))=LEN($C$2),ROW($A$2:$A$10)-ROW($A$2)+1),ROWS(D$2:D2))),””)
    Ctrl+Shift+Enter > Copy ลงด้านล่าง

ภาพตัวอย่างการค้นหาบางอักขระในข้อความ

image

 
Leave a comment

Posted by on 30/12/2012 in If, Index, Indirect, Isnumber, Len, Mid, Row, Rows, Small, Transpose

 

การแสดงรายการซ้ำตามจำนวนที่กำหนด

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

Surprised smile กรณีแบบยากเราจะใช้สูตร Array ในการแสดงรายการซ้ำ ๆ ตามจำนวนที่กำหนด ยกตัวอย่างเช่นตามภาพด้านล่าง ข้อมูลอยู่ที่ A2:A7 จำนวนที่ระบุว่าซ้ำกันกี่ครั้งอยู่ที่ B2:B7 โดยจะนำรายการมาแสดงตั้งแต่ F2 เป็นต้นไป

ภาพแสดงการแสดงรายการซ้ำตามจำนวนที่กำหนดแบบยาก

AdvanceReptItem

วิธีการ

  1. ที่เซลล์ B8 คีย์สูตรเพื่อหายอดรวมตัวเลขทั้งหมด เพื่อประโยชน์ในการกำหนดจำนวนบรรทัดสูงสุดที่จะแสดงรายการ
    =SUM(B2:B7)
    Enter
  2. ที่เซลล์ B9 หาค่าสูงสุดของช่วง B2:B7
    =MAX(B2:B7)
    Enter
  3. ที่เซลล์ F2 คีย์สูตรเพื่อแสดงรายการ
    =IF(ROWS($F$2:F2)>$B$8,””,INDEX($A$2:$A$7,SMALL(IF(TRANSPOSE(ROW(INDIRECT(“1:”&$B$9)))<=$B$2:$B$7,ROW($B$2:$B$7)-ROW($B$2)+1),ROWS($F$2:F2))))
    Ctrl+Shift+Enter > Copy ลงด้านล่างตามต้องการ สังเกตการกดแป้นจะต้องกด Ctrl+Shift ค้างไว้ก่อนแล้วตามด้วย Enter หากกดแป้นถูกต้องจะเห็นเครื่องหมายปีกกาคร่อมสูตร ปีกกานี้จะคีย์เข้าไปเองไม่ได้ครับ การแก้ไขปรับปรุงสูตรจะต้องกด Ctrl+Shift+Enter ทุกครั้ง

Open-mouthed smile กรณีแบบง่ายจะใช้สูตร Lookup และเพิ่ม C2:C7 มาช่วย โดยจะนำข้อมูลมาแสดงตั้งแต่ G2 เป็นต้นไปตามภาพด้านล่างครับ

ภาพแสดงการแสดงรายการซ้ำตามจำนวนที่กำหนดแบบง่าย

NormalReptItem

วิธีการ

  1. ที่เซลล์ B8 คีย์สูตรเพื่อหายอดรวมตัวเลขทั้งหมด เพื่อประโยชน์ในการกำหนดจำนวนบรรทัดสูงสุดที่จะแสดงรายการ
    =SUM(B2:B7)
    Enter
  2. ที่เซลล์ C2 คีย์สูตรเพื่อประโยชน์ในการ Lookup ข้อมูล
    =SUM(B$2:B2)-B2+1
    Enter > Copy ลงด้านล่าง
  3. ที่เซลล์ G2 คีย์สูตรเพื่อแสดงรายการ
    =IF(ROWS($G$2:G2)>$B$8,””,LOOKUP(ROWS($G$2:G2),$C$2:$C$7,$A$2:$A$7))
    Enter > Copy ลงด้านล่างตามต้องการ
 
Leave a comment

Posted by on 11/06/2011 in Index, Indirect, Lookup, Max, Row, Rows, Sum, Transpose

 

การนำข้อมูลที่อยู่ในคอลัมน์เดียวไปเรียงหลายคอลัมน์

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

ตัวอย่างเช่นข้อมูลอยู่ที่ A2:A100 และต้องการเรียงใหม่ที่คอลัมน์ B เริ่มจาก B2 เป็นต้นไปโดยสามารถเลือกได้ว่าแต่ละคอลัมน์จะให้มีข้อมูลเพียงกี่บรรทัด

สามารถทำได้ดังนี้

  1. ที่เซลล์ B1 ทำ Validation เพื่อเลือกจำนวนบรรทัดที่ต้องการ
  2. ที่เซลล์ B2 คีย์สูตรเพื่อจัดเรียงข้อมูลใหม่
    =IF(ROWS(B$2:B2)>$B$1,””,IFERROR(INDEX($A$2:$A$100,ROWS(B$2:B2)+($B$1*(COLUMNS($B2:B2)-1))),””)
    Enter > Copy ไปด้านขวาและลงด้านล่างตามต้องการ

    สูตรข้างต้นใช้กับ Excel Version 2007 เป็นต้นไป ส่วน Excel 2003 สามารถใช้สูตรตามด้านล่างครับ
    =IF(OR(ROWS(B$2:B2)>$B$1,ROWS(B$2:B2)+($B$1*(COLUMNS($B2:B2)-1))>COUNTA($A$2:$A$100)),””,INDEX($A$2:$A$100,ROWS(B$2:B2)+($B$1*(COLUMNS($B2:B2)-1))))
    Enter > Copy ไปทางด้านขวาและลงด้านล่าง

ภาพประกอบการนำข้อมูลที่อยู่ในคอลัมน์เดียวไปเรียงหลายคอลัมน์

ReArrangeDataFromOneToManyComumn

 
Leave a comment

Posted by on 10/06/2011 in Column, Counta, If, Iferror, Index, Rows

 

การจัดเรียงข้อมูลจากน้อยไปหามากหรือตรงกันข้ามด้วยสูตร

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

ตามด้านล่างจะเป็นภาพการเรียงข้อมูลจากน้อยไปหามากด้วยสูตรเปรียบเทียบกับการเรียงข้อมูลด้วยเมนู Data > Sort

ภาพการเรียงข้อมูลจากน้อยไปหามากด้วยสูตร

SortByFormulas

โดยมีวิธีการดังนี้

  1. ข้อมูลอยู่ที่เซลล์ A1:A12
  2. ที่ B1 คีย์สูตรเพื่อนับว่ามีเซลล์ที่มีข้อมูลจำนวนเท่าไร

    =Counta(A:A)

    Enter

  3. ที่เซลล์ C1 คีย์สูตรเพื่อเรียงข้อมูลจากน้อยไปหามาก

    =IF(ROWS(C$1:C1)>$B$1,””,INDEX($A$1:$A$12,MATCH(SMALL(IF(ISERR(CODE($A$1:$A$12)),””,CODE($A$1:$A$12)+COUNTIF($A$1:$A$12,”<“&$A$1:$A$12)),ROWS(C$2:C2)),CODE($A$1:$A$12)+COUNTIF($A$1:$A$12,”<“&$A$1:$A$12),0)))

    Ctrl+Shift+Enter > Copy ลงด้านล่าง

Note:

กรณีต้องการเรียงข้อมูลจากมากไปหาน้อยให้เปลี่ยน Small เป็น Large

 
Leave a comment

Posted by on 18/04/2011 in Code, Countif, If, Index, Iserr, Large, Match, Rows, Small

 

เทคนิคการตัดข้อความที่คั่นด้วยเครื่องหมายต่าง ๆ

การตัดข้อความกรณีที่มีเครื่องหมายต่าง ๆ คั่นระหว่างข้อความ นอกจากจะใช้ Text to columns ได้แล้ว เรายังสามารถใช้สูตรมาจัดการได้ เพื่อจะได้ไม่ต้องทำ Text to columns ซ้ำ ๆ ครับ

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

ตัวอย่างตามภาพด้านล่าง ข้อความอยู่ที่เซลล์ A1 และคั่นด้วยเครื่องหมายคอมม่า (,) เราต้องการตัดข้อความออกเป็นแต่ละค่าโดยแสดงที่ A3 เป็นต้นไป

ExtractText

การแบ่งแต่ละข้อความเราสามารถใช้สูตรดังนี้ครับ

  1. ที่ A2 คีย์
    =Len(A1)
    Enter
  2. ที่ A3 คีย์สูตรเพื่อแบ่งข้อความ
    =TRIM(MID(SUBSTITUTE(“,”&A$1,”,”,REPT(” “,A$2)),ROWS(A$3:A3)*A$2,A$2))
    Enter > Copy ลงด้านล่าง

เราสามารถแกะสูตรในข้อ 2 ตามด้านล่างครับ

  1. จากสูตรในข้อ 2 หมายถึงให้ตัดช่องว่างที่เกินความจำเป็นจากผลลัพธ์ของสูตร MID(SUBSTITUTE(“,”&A$1,”,”,REPT(” “,A$2)),ROWS(A$3:A3)*A$2,A$2)
  2. จากสูตร MID(SUBSTITUTE(“,”&A$1,”,”,REPT(” “,A$2)),ROWS(A$3:A3)*A$2,A$2)) หมายถึงให้ตัดข้อความที่ได้จากผลลัพธ์ของสูตร SUBSTITUTE(“,”&A$1,”,”,REPT(” “,A$2)) โดยเริ่มจากตำแหน่งที่ได้จากผลลัพธ์ของสูตร ROWS(A$3:A3)*A$2 มาเป็นจำนวนอักขระตามค่าในเซลล์ A2
  3. จากสูตร SUBSTITUTE(“,”&A$1,“,”,REPT(” “,A$2)) หมายถึงให้เปลี่ยนค่าอักขระ “,” ในข้อความ “,”&A$1 ให้เป็นอักขระ REPT(” “,A$2)
  4. จากสูตร REPT(” “,A$2) หมายถึงให้แสดงค่า ” “ เป็นจำนวนครั้งเท่ากับค่าใน A2
  5. จากสูตร ROWS(A$3:A3)*A$2 หมายถึงให้นำจำนวนแถวในช่วง A$3:A3 มาคูณกับค่าใน A2 เพื่อจะใช้เป็นจุดเริ่มตัดข้อความ
 
2 Comments

Posted by on 03/04/2011 in Mid, Rept, Rows, Substitute, Trim

 

การ Lookup ข้อมูลพร้อมทำ Hyperlink กลับไปยังต้นแหล่ง

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

ยกตัวอย่างการดึงข้อมูลตามเงื่อนไขตามภาพด้านล่าง ใน Sheet2 เป็นการดึงข้อมูลเฉพาะเซลล์ที่มีความยาวข้อมูลระหว่าง 60 ถึง 70 ตัวอักษรจาก Sheet1 และสำหรับเซลล์ที่แสดงผลนั้น สามารถอ้างถึงตำแหน่งที่มาของข้อมูลและยังมีความพิเศษที่สามารถคลิกลงบนรายการที่สนใจ เพื่อ Link กับไปยังข้อมูลต้นแหล่งได้อีกด้วย

ภาพประกอบการ Lookup พร้อมทำ Hyperlink กลับไปยังต้นแหล่ง

ListAndHyperlink

ตามวิธีการด้านล่างนี้จะต้อง Save ไฟล์ก่อน เพราะจะต้องนำชื่อไฟล์มาใช้ในสูตร

ซึ่งมีขั้นตอนดังนี้

  1. Sheet1 เซลล์ B1 คีย์ 0 เพื่อใช้เป็นเซลล์ต้นทางในสูตร Lookup
  2. Sheet1 เซลล์ B2 คีย์สูตรเพื่อให้ลำดับกับข้อมูลที่ตรงตามเงื่อนไข
    =IF(AND(LEN(A2)>=60,LEN(A2)<=70),LOOKUP(9.99999999999999E+307,$B$1:B1)+1,””)
    Enter > Copy ลงด้านล่าง
  3. Sheet2 เซลล์ B1 คีย์สูตรเพื่อหาจำนวนที่พบทั้งหมดจากข้อ 2
    =LOOKUP(9.99999999999999E+307,Sheet1!B:B)
    Enter
  4. Sheet2 เซลล์ A2 คีย์สูตรเพื่อ List รายการที่ตรงตามเงื่อนไข
    =IF(ROWS($A$2:A2)>$B$1,””,HYPERLINK(“[LookupListHyperlink.xls]”&”Sheet1!A”&MATCH(ROWS($A$2:A2),Sheet1!$B:$B),”Sheet1 Cell A”&MATCH(ROWS($A$2:A2),Sheet1!$B:$B)))
    Enter > Copy ลงด้านล่าง

Note: จากสูตรในข้อ 4 ขอเพิ่มเติมคร่าว ๆ เพื่อเป็นแนวทางครับ

  1. LookupListHyperlink.xls คือชื่อไฟล์
  2. Sheet1!A เป็นการระบุว่าให้นำมาจาก Sheet1 คอลัมน์ A
  3. MATCH(ROWS($A$2:A2),Sheet1!$B:$B) หาตำแหน่งที่พบข้อมูล
 
Leave a comment

Posted by on 16/03/2010 in Address, And, Hyperlink, Len, Lookup, Rows

 
 
Follow

Get every new post delivered to your Inbox.

Join 792 other followers