สมาร์ทชีต 9.1.1
Smartsheet เป็นแพลตฟอร์มการทำงานแบบไดนามิกที่ช่วยให้คุณจัดการโครงการ สร้างเวิร์กโฟลว์ และทำงานร่วมกับทีมของคุณได้
เนื่องจากมาโคร Excel ของคุณมีประสิทธิภาพและซับซ้อนมากขึ้น คุณอาจพบว่ามาโครเหล่านี้สูญเสียประสิทธิภาพการทำงาน เมื่อคุยแมโครคำว่าประสิทธิภาพการทำงานมักจะตรงกันกับความเร็ว ความเร็วคือความเร็วที่ขั้นตอน VBA ของคุณทำงานตามที่ตั้งใจไว้ ต่อไปนี้เป็นสิบวิธีที่จะช่วยให้มาโคร Excel ของคุณทำงานในระดับประสิทธิภาพสูงสุด
คุณทราบหรือไม่ว่าทุกครั้งที่มีการเปลี่ยนแปลงหรือจัดการเซลล์ที่ส่งผลต่อสูตรในสเปรดชีตของคุณ Excel จะคำนวณทั้งเวิร์กชีตใหม่ ในเวิร์กชีตที่มีสูตรจำนวนมาก ลักษณะการทำงานนี้อาจทำให้มาโครของคุณช้าลงอย่างมาก
คุณสามารถใช้คุณสมบัติ Application.Calculation เพื่อบอกให้ Excel เปลี่ยนไปใช้โหมดการคำนวณด้วยตนเองได้ เมื่อเวิร์กบุ๊กอยู่ในโหมดการคำนวณด้วยตนเอง เวิร์กบุ๊กจะไม่คำนวณใหม่จนกว่าคุณจะทริกเกอร์การคำนวณอย่างชัดแจ้งโดยการกดปุ่ม F9
กำหนดให้ Excel เข้าสู่โหมดการคำนวณด้วยตนเอง เรียกใช้โค้ด จากนั้นสลับกลับเป็นโหมดการคำนวณอัตโนมัติ
ย่อย Macro1() Application.Calculation = xlCalculationManual 'วางรหัสมาโครของคุณที่นี่ Application.Calculation = xlCalculationAutomatic จบซับ
การตั้งค่าโหมดการคำนวณกลับเป็น xlCalculationAutomatic จะทริกเกอร์การคำนวณใหม่ของเวิร์กชีตโดยอัตโนมัติ ดังนั้นจึงไม่จำเป็นต้องกดปุ่ม F9 หลังจากที่มาโครของคุณทำงาน
คุณอาจสังเกตเห็นว่าเมื่อมาโครของคุณทำงาน หน้าจอของคุณจะสั่นไหวพอสมควร การกะพริบนี้เป็นการที่ Excel พยายามวาดหน้าจอใหม่เพื่อแสดงสถานะปัจจุบันของเวิร์กชีต น่าเสียดาย ทุกครั้งที่ Excel วาดหน้าจอใหม่ จะใช้ทรัพยากรหน่วยความจำ
คุณสามารถใช้คุณสมบัติ Application.ScreenUpdating เพื่อปิดใช้งานการอัปเดตหน้าจอจนกว่าแมโครของคุณจะเสร็จสิ้น การปิดใช้งานการอัปเดตหน้าจอช่วยประหยัดเวลาและทรัพยากร ทำให้มาโครของคุณทำงานเร็วขึ้นเล็กน้อย หลังจากที่โค้ดแมโครของคุณทำงานเสร็จแล้ว คุณสามารถเปิดการอัปเดตหน้าจออีกครั้งได้
ย่อย Macro1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False 'วางรหัสมาโครของคุณที่นี่ Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True จบซับ
หลังจากที่คุณตั้งค่าคุณสมบัติ ScreenUpdating กลับเป็น True แล้ว Excel จะทริกเกอร์การวาดหน้าจอใหม่โดยอัตโนมัติ
โดยปกติ แถบสถานะ Excel ซึ่งปรากฏที่ด้านล่างของหน้าต่าง Excel จะแสดงความคืบหน้าของการดำเนินการบางอย่างใน Excel ถ้ามาโครของคุณทำงานกับข้อมูลจำนวนมาก แถบสถานะจะใช้ทรัพยากรบางส่วน
สิ่งสำคัญที่ควรทราบคือ การปิดการอัปเดตหน้าจอแยกจากการปิดการแสดงแถบสถานะ แถบสถานะจะอัปเดตต่อไปแม้ว่าคุณจะปิดการอัปเดตหน้าจอ คุณสามารถใช้คุณสมบัติ Application.DisplayStatusBar เพื่อปิดใช้งานการอัปเดตแถบสถานะใดๆ เป็นการชั่วคราว ปรับปรุงประสิทธิภาพของแมโครของคุณต่อไป:
ย่อย Macro1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.DisplayStatusBar = False 'วางรหัสมาโครของคุณที่นี่ Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Application.DisplayStatusBar = True จบซับ
คุณสามารถใช้มาโครเป็นกระบวนงานเหตุการณ์ โดยบอกให้ Excel เรียกใช้โค้ดบางอย่างเมื่อเวิร์กชีตหรือเวิร์กบุ๊กเปลี่ยนแปลง
บางครั้ง มาโครมาตรฐานทำการเปลี่ยนแปลงที่จะทริกเกอร์ขั้นตอนเหตุการณ์ ตัวอย่างเช่น หากคุณมีมาโครมาตรฐานที่จัดการหลายเซลล์ใน Sheet1 ทุกครั้งที่มีการเปลี่ยนแปลงเซลล์บนแผ่นงานนั้น แมโครของคุณต้องหยุดชั่วคราวในขณะที่กิจกรรม Worksheet_Change ทำงาน
คุณสามารถเพิ่มการเพิ่มประสิทธิภาพอีกระดับได้โดยใช้คุณสมบัติ EnableEvents เพื่อบอกให้ Excel ละเว้นเหตุการณ์ในขณะที่แมโครของคุณทำงาน
ตั้งค่าคุณสมบัติ EnableEvents เป็น False ก่อนเรียกใช้แมโครของคุณ หลังจากที่โค้ดแมโครของคุณทำงานเสร็จแล้ว คุณสามารถตั้งค่าคุณสมบัติ EnableEvents กลับเป็น True ได้
ย่อย Macro1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.EnableEvents = เท็จ 'วางรหัสมาโครของคุณที่นี่ Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Application.DisplayStatusBar = True Application.EnableEvents = True จบซับ
ทุกครั้งที่มาโครแก้ไขจำนวนแถว แก้ไขจำนวนคอลัมน์ หรือเปลี่ยนการตั้งค่าหน้าของเวิร์กชีต Excel จะถูกบังคับให้ใช้เวลาในการคำนวณตัวแบ่งหน้าที่แสดงในแผ่นงานใหม่
คุณสามารถหลีกเลี่ยงพฤติกรรมนี้ได้โดยเพียงแค่ซ่อนตัวแบ่งหน้าก่อนที่จะเริ่มมาโครของคุณ
ตั้งค่าคุณสมบัติแผ่นงาน DisplayPageBreaks เป็น False เพื่อซ่อนตัวแบ่งหน้า ถ้าคุณต้องการแสดงตัวแบ่งหน้าต่อไปหลังจากที่แมโครของคุณทำงาน ให้ตั้งค่าคุณสมบัติแผ่นงาน DisplayPageBreaks กลับเป็น True
ย่อย Macro1() Application.Calculation = xlCalculationManual Application.ScreenUpdating = False Application.DisplayStatusBar = False Application.EnableEvents = เท็จ Activesheet.DisplayPageBreaks = False 'วางรหัสมาโครของคุณที่นี่ Application.Calculation = xlCalculationAutomatic Application.ScreenUpdating = True Application.DisplayStatusBar = True Application.EnableEvents = True Activesheet.DisplayPageBreaks = True จบซับ
ถ้าแมโครของคุณจัดการกับตารางสรุปข้อมูลที่มีแหล่งข้อมูลขนาดใหญ่ คุณอาจประสบปัญหาประสิทธิภาพต่ำเมื่อทำสิ่งต่างๆ เช่น การเพิ่มหรือย้ายเขตข้อมูล Pivot แบบไดนามิก
คุณสามารถปรับปรุงประสิทธิภาพการทำงานของแมโครของคุณโดยระงับการคำนวณใหม่ของตารางสาระสำคัญจนกว่าจะมีการเปลี่ยนแปลงฟิลด์เดือยทั้งหมด เพียงตั้งค่าคุณสมบัติ PivotTable.ManualUpdate เป็น True เพื่อเลื่อนการคำนวณใหม่ เรียกใช้โค้ดแมโครของคุณ แล้วตั้งค่าคุณสมบัติ PivotTable.ManualUpdate กลับเป็น False เพื่อทริกเกอร์การคำนวณใหม่
ย่อย Macro1() ActiveSheet.PivotTables("PivotTable1")).ManualUpdate=True 'วางรหัสมาโครของคุณที่นี่ ActiveSheet.PivotTables("PivotTable1")).ManualUpdate=False จบซับ
สิ่งสำคัญคือต้องจำไว้ว่าแม้ว่า Macro Recorder จะช่วยประหยัดเวลาด้วยการเขียนโค้ด VBA ให้กับคุณ แต่ก็ไม่ได้เขียนโค้ดที่มีประสิทธิภาพสูงสุดเสมอไป ตัวอย่างที่สำคัญคือวิธีที่ Macro Recorder จับภาพการกระทำการคัดลอกและวางที่คุณดำเนินการขณะบันทึก
คุณสามารถเพิ่มมาโครของคุณได้เล็กน้อยโดยตัดคนกลางออกและทำสำเนาโดยตรงจากเซลล์หนึ่งไปยังเซลล์ปลายทาง รหัสสำรองนี้ใช้อาร์กิวเมนต์ปลายทางเพื่อข้ามคลิปบอร์ดและคัดลอกเนื้อหาของเซลล์ A1 ไปยังเซลล์ B1 โดยตรง
ช่วง("A1").คัดลอกปลายทาง:=ช่วง("B1")
ถ้าคุณต้องการคัดลอกเฉพาะค่า (ไม่ใช่การจัดรูปแบบหรือสูตร) คุณสามารถปรับปรุงประสิทธิภาพได้มากขึ้นโดยหลีกเลี่ยงวิธีการคัดลอกทั้งหมดเข้าด้วยกัน เพียงตั้งค่าของเซลล์ปลายทางให้เป็นค่าเดียวกับที่พบในเซลล์ต้นทาง วิธีนี้เร็วกว่าวิธีการคัดลอกประมาณ 25 เท่า:
Range("B1").Value = Range("A1")).Value
ถ้าคุณต้องการคัดลอกเฉพาะสูตรจากเซลล์หนึ่งไปยังอีกเซลล์หนึ่ง (ไม่ใช่ค่าหรือการจัดรูปแบบ) คุณสามารถตั้งค่าสูตรของเซลล์ปลายทางให้เป็นสูตรเดียวกันที่มีอยู่ในเซลล์ต้นทางได้:
ช่วง("B1").สูตร = ช่วง("A1").สูตร
เมื่อบันทึกมาโคร คุณมักจะจัดการวัตถุเดียวกันมากกว่าหนึ่งครั้ง คุณสามารถประหยัดเวลาและปรับปรุงประสิทธิภาพได้โดยใช้คำสั่ง With เพื่อดำเนินการหลายอย่างกับวัตถุที่กำหนดในช็อตเดียว
คำสั่ง With ที่ใช้ในตัวอย่างต่อไปนี้จะบอกให้ Excel ใช้การเปลี่ยนแปลงการจัดรูปแบบทั้งหมดในคราวเดียว:
ด้วย Range("A1")).Font .ตัวหนา = จริง .ตัวเอียง = จริง .Underline = xlUnderlineStyleSingle จบด้วย
การสร้างนิสัยในการแบ่งกลุ่มการกระทำลงในคำสั่ง With ไม่เพียงแต่ทำให้มาโครของคุณทำงานเร็วขึ้น แต่ยังช่วยให้อ่านโค้ดแมโครของคุณได้ง่ายขึ้นอีกด้วย
Macro Recorder ชอบใช้วิธี Select เพื่อเลือกวัตถุอย่างชัดเจนก่อนดำเนินการกับวัตถุ โดยทั่วไปไม่จำเป็นต้องเลือกออบเจ็กต์ก่อนใช้งาน ที่จริงแล้ว คุณสามารถปรับปรุงประสิทธิภาพของมาโครได้อย่างมากโดยไม่ใช้วิธี Select
หลังจากบันทึกมาโครของคุณแล้ว ให้ปรับเปลี่ยนโค้ดที่สร้างขึ้นเพื่อลบเมธอด Select ให้เป็นนิสัย ในกรณีนี้ โค้ดที่ปรับให้เหมาะสมจะมีลักษณะดังนี้:
ชีต("Sheet1")).ช่วง("A1").FormulaR1C1 = "1000" ชีต("Sheet2")).ช่วง("A1").FormulaR1C1 = "1000" ชีต("Sheet3")).ช่วง("A1").FormulaR1C1 = "1000"
โปรดทราบว่าไม่มีการเลือกสิ่งใด โค้ดใช้ลำดับชั้นของออบเจ็กต์เพื่อใช้การดำเนินการที่จำเป็น
อีกวิธีหนึ่งในการเพิ่มความเร็วให้กับมาโครของคุณคือการจำกัดจำนวนครั้งที่คุณอ้างอิงข้อมูลเวิร์กชีตในโค้ดของคุณ การดึงข้อมูลจากเวิร์กชีตมีประสิทธิภาพน้อยกว่าเสมอจากหน่วยความจำ กล่าวคือ แมโครของคุณจะทำงานเร็วขึ้นมาก หากไม่ต้องโต้ตอบกับเวิร์กชีตซ้ำๆ
ตัวอย่างเช่น โค้ดอย่างง่ายต่อไปนี้บังคับให้ VBA กลับสู่ Sheets("Sheet1") อย่างต่อเนื่อง ช่วง("A1") เพื่อให้ได้ตัวเลขที่จำเป็นสำหรับการเปรียบเทียบการดำเนินการในคำสั่ง If:
สำหรับ ReportMonth = 1 ถึง 12 ถ้า Range("A1").Value = ReportMonth แล้ว MsgBox 1000000 / เดือนรายงาน จบถ้า รายงานถัดไปเดือน
วิธีที่มีประสิทธิภาพมากขึ้นคือการบันทึกค่าใน Sheets("Sheet1").Range("A1") ไปยังตัวแปรที่เรียกว่า MyMonth ด้วยวิธีนี้ โค้ดจะอ้างอิงตัวแปร MyMonth แทนเวิร์กชีต:
Dim MyMonth เป็นจำนวนเต็ม MyMonth = ช่วง ("A1") .Value สำหรับ ReportMonth = 1 ถึง 12 ถ้าเดือนของฉัน = เดือนรายงาน แล้ว MsgBox 1000000 / เดือนรายงาน จบถ้า รายงานถัดไปเดือน
พิจารณาใช้ประโยชน์จากตัวแปรเพื่อทำงานกับข้อมูลในหน่วยความจำ แทนที่จะอ้างอิงเวิร์กชีตโดยตรง
เมื่อเรียกวิธีการหรือคุณสมบัติของวัตถุ จำเป็นต้องผ่านอินเทอร์เฟซ IDispatch ของคอมโพเนนต์ OLE การเรียกไปยังคอมโพเนนต์ OLE เหล่านี้ต้องใช้เวลา ดังนั้นการลดจำนวนการอ้างอิงไปยังคอมโพเนนต์ OLE สามารถปรับปรุงความเร็วของโค้ดแมโครได้
สำหรับการเรียกใช้คุณสมบัติของอ็อบเจ็กต์หรือเมธอด โดยทั่วไปจะใช้เมธอดการแสดงของ Object.Method นั่นคือ "." สัญลักษณ์ใช้เพื่อเรียกคุณสมบัติและวิธีการ
ดังนั้นจำนวนวิธีหรือการเรียกคุณสมบัติจึงสามารถตัดสินได้ตามจำนวนสัญลักษณ์ "." ยิ่ง "" น้อยลง สัญลักษณ์ ยิ่งโค้ดทำงานเร็วขึ้น
ตัวอย่างเช่น ข้อความต่อไปนี้มีสัญลักษณ์ 3 ตัว "."
ThisWorkbook.Sheet1.Range("A1").Value = 100
ข้อความต่อไปนี้มีสัญลักษณ์ "." เพียงตัวเดียวเท่านั้น
Activewindow.Top = 100
ต่อไปนี้เป็นเคล็ดลับในการลดจำนวนสัญลักษณ์ "" เพื่อให้วิ่งเร็วขึ้น
ขั้นแรก เมื่อคุณต้องการอ้างถึงออบเจ็กต์เดียวกันซ้ำๆ คุณสามารถตั้งค่าออบเจ็กต์ให้เป็นตัวแปรเพื่อลดจำนวนการโทรได้ ตัวอย่างเช่น รหัสต่อไปนี้ต้องมีการเรียกสองครั้งต่อบรรทัด
ThisWorkbook.Sheets("Sheet1").Cells(1, 1) = 100
ThisWorkbook.Sheets("Sheet1").Cells(2, 1) = 200
ThisWorkbook.Sheets("Sheet1").Cells(3, 1) = 300
เนื่องจาก ออบเจ็กต์ Sheets("Sheet1") จำเป็นต้องถูกอ้างอิงซ้ำๆ จึงสามารถตั้งค่าเป็นตัวแปร sht ก่อนได้ เพื่อให้แต่ละโค้ดถูกเรียกเพียงครั้งเดียว
Set sht = ThisWorkbook.Sheets("Sheet1")
sht.Cells(1, 1) = 100
sht.Cells(2, 1) = 200
sht.Cells(3, 1) = 300
ประการที่สอง หากคุณไม่ต้องการประกาศตัวแปรชั่วคราว sht คุณสามารถใช้ คำสั่ง With ที่กล่าวถึงข้างต้นได้ ดังแสดงในตัวอย่างต่อไปนี้:
With ThisWorkbook.Sheets("Sheet1")
.Cells(1, 1) = 100
.Cells(2, 1) = 200
.Cells(3, 1) = 300
End With
ประการที่สาม เมื่อมีลูปจำนวนมาก พยายามเก็บคุณสมบัติและวิธีการไว้นอกลูป เมื่อนำค่าคุณสมบัติของออบเจ็กต์เดียวกันกลับมาใช้ซ้ำในลูป ขั้นแรกคุณสามารถกำหนดค่าคุณสมบัติให้กับตัวแปรที่ระบุภายนอกลูป จากนั้นใช้ตัวแปรในลูปซึ่งจะทำให้ได้ความเร็วที่เร็วขึ้น ดังแสดงในตัวอย่างต่อไปนี้:
For i = 1 To 1000
ThisWorkbook.Sheets("Sheet1").Cells(1, 1) = Cells(1, 2).Value
ThisWorkbook.Sheets("Sheet1").Cells(2, 1) = Cells(1, 2).Value
ThisWorkbook.Sheets("Sheet1").Cells(3, 1) = Cells(1, 2).Value
Next i
แต่ละวงในตัวอย่างนี้ได้รับคุณสมบัติค่าของเซลล์ Cells(1,2) หากคุณกำหนดคุณสมบัติ Value ของ Cells(1.2) ให้กับตัวแปรก่อนที่การวนซ้ำจะเริ่มต้น คุณจะได้รับการทำงานที่เร็วขึ้น ดังแสดงในตัวอย่างต่อไปนี้:
tmp = Cells(1, 2).Value
For i = 1 To 1000
ThisWorkbook.Sheets("Sheet1").Cells(1, 1) = tmp
ThisWorkbook.Sheets("Sheet1").Cells(2, 1) = tmp
ThisWorkbook.Sheets("Sheet1").Cells(3, 1) = tmp
Next i
โค้ดด้านบนเรียก ThisWorkbook.Sheets("Sheet1") ทุกครั้งที่วนซ้ำ คุณสามารถทำได้เร็วขึ้นโดยใช้ คำสั่ง With เพื่อย้ายการเรียกไปยัง ThisWorkbook.Sheets("Sheet1") นอกวง ดังแสดงในตัวอย่างต่อไปนี้:
tmp = Cells(1, 2).Value
With ThisWorkbook.Sheets("Sheet1")
For i = 1 To 1000
.Cells(1, 1) = tmp
.Cells(2, 1) = tmp
.Cells(3, 1) = tmp
Next i
End With
ผู้เริ่มต้นมักนิยมใช้ตัวแปรประเภท Variant ซึ่งมีข้อดีคือมีความซับซ้อนน้อยกว่า เนื่องจากข้อมูลประเภทใดก็ได้สามารถใช้ได้โดยไม่มีปัญหาเรื่องหน่วยความจำล้น หากข้อมูลมีขนาดใหญ่เกินไปสำหรับประเภทข้อมูลจำนวนเต็มหรือแบบยาว อย่างไรก็ตาม ข้อมูลประเภท Varienmt ต้องการพื้นที่หน่วยความจำเพิ่มเติมมากกว่าประเภทอื่นๆ ที่ระบุ (2 ไบต์สำหรับข้อมูลจำนวนเต็ม 4 ไบต์สำหรับข้อมูลแบบยาว และ 16 ไบต์สำหรับข้อมูล Variant) VBA ต้องใช้เวลาในการประมวลผลข้อมูลประเภท Variant มากกว่าประเภทที่ระบุอื่นๆ ของข้อมูล ดังตัวอย่างต่อไปนี้
Sub VariantTest()
Dim i As Long
Dim ix As Integer, iy As Integer, iz As Integer
Dim vx As Variant, vy As Variant, vz As Variant
Dim tm As Date
vx = 100: vy = 50
tm = Timer
For i = 1 To 1000000
vz = vx * vy
vz = vx + vy
vz = vx - vy
vz = vx / vy
Next i
Debug.Print "Variant types take " & Format((Timer - tm), "0.00000") & " seconds"
ix = 100: iy = 50
tm = Timer
For i = 1 To 1000000
iz = ix * iy
iz = ix + iy
iz = ix - iy
iz = ix / iy
Next i
Debug.Print "Integer types take " & Format((Timer - tm), "0.00000") & " seconds"
End Sub
ในโค้ดข้างต้น บรรทัดที่ 8 ถึง 13 ดำเนินการ 1 ล้านการดำเนินการของการบวก การลบ การคูณและการหารของตัวแปร Variant และบรรทัดที่ 17 ถึง 22 ดำเนินการ 1 ล้านการดำเนินการของการบวก ลบ คูณ และหารตัวแปรจำนวนเต็ม บนคอมพิวเตอร์ของฉัน การทำงานของตัวแปร Variant ใช้เวลาประมาณ 0.09375 วินาที ในขณะที่การทำงานของตัวแปร Integer ใช้เวลาประมาณ 0.03125 วินาที ผลลัพธ์อาจแตกต่างกันไปในคอมพิวเตอร์แต่ละเครื่อง แต่ ตัวแปร Variant จะช้ากว่าตัวแปร Integer อย่างมาก
ด้วยเหตุนี้ เราจึงแนะนำให้หลีกเลี่ยงการใช้ตัวแปร Variant เมื่อคุณสามารถใช้ประเภทข้อมูลที่ระบุได้อย่างชัดเจน
Smartsheet เป็นแพลตฟอร์มการทำงานแบบไดนามิกที่ช่วยให้คุณจัดการโครงการ สร้างเวิร์กโฟลว์ และทำงานร่วมกับทีมของคุณได้
SharePoint คือระบบการทำงานร่วมกันบนเว็บที่ใช้แอปพลิเคชันเวิร์กโฟลว์ที่หลากหลาย ฐานข้อมูล "รายการ" และส่วนประกอบของเว็บอื่นๆ รวมถึงคุณลักษณะด้านความปลอดภัยเพื่อให้การควบคุมกลุ่มธุรกิจทำงานร่วมกัน
Van Nien Calendar เป็นแอปพลิเคชั่นดูปฏิทินบนโทรศัพท์ของคุณ ช่วยให้คุณดูวันที่ตามจันทรคติบนโทรศัพท์ของคุณได้อย่างรวดเร็ว จึงช่วยจัดการงานสำคัญของคุณ
Microsoft Outlook เป็นแอปพลิเคชันทางธุรกิจและเพิ่มประสิทธิภาพการทำงานที่พัฒนาโดย Microsoft Corporation
ClickUp เป็นหนึ่งในแพลตฟอร์มการผลิตที่ได้รับคะแนนสูงสุดสำหรับทุกธุรกิจ ธุรกิจขนาดใหญ่เช่น Google, Booking.com, San Diego Padres และ Uber ต่างก็ใช้ ClickUp เพื่อเพิ่มประสิทธิภาพในที่ทำงาน
PDF กลายเป็นรูปแบบที่ใช้กันทั่วไปในการอ่าน สร้าง และส่งเอกสารข้อความ ในทางกลับกัน มีจำนวนโปรแกรมที่ใช้สำหรับเอกสารประเภทนี้เพิ่มขึ้น PDF-XChange Viewer เป็นหนึ่งในโปรแกรมดู PDF ที่มีจำนวนเพิ่มมากขึ้น
Apache OpenOffice นำเสนอชุดแอปพลิเคชัน Office ที่สมบูรณ์ซึ่งแข่งขันกับ Microsoft 365 โดยเฉพาะใน Excel, PowerPoint และ Word ช่วยให้คุณจัดการโครงการของคุณได้อย่างมีประสิทธิภาพมากขึ้นและรองรับไฟล์ได้หลายรูปแบบ
ซอฟต์แวร์ iTaxViewer เป็นซอฟต์แวร์อ่านไฟล์ XML ที่ได้รับความนิยมมากที่สุดในปัจจุบัน ซอฟต์แวร์นี้เป็นแอปพลิเคชั่นสำหรับอ่านการประกาศภาษีอิเล็กทรอนิกส์ในรูปแบบ XML ของกรมสรรพากรทั่วไป
Nitro PDF Reader เป็นโปรแกรมแก้ไข PDF ที่มีประโยชน์ซึ่งครอบคลุมงานพื้นฐานทั้งหมดที่คนส่วนใหญ่ทำทุกวันด้วยเอกสาร PDF
Foxit Reader ส่วนใหญ่เป็นโปรแกรมอ่าน PDF และยังช่วยให้คุณสร้างไฟล์ PDF ลงนาม แก้ไข และเพิ่มคำอธิบายประกอบได้ ใช้งานได้กับระบบปฏิบัติการ มีปลั๊กอินสำหรับโปรแกรมต่าง ๆ จากแพ็คเกจ Microsoft Office