ການເອົາຕາລາງຫວ່າງເປົ່າອອກຈາກໄລຍະໃດໜຶ່ງ

ການສ້າງບັນຫາ

ພວກເຮົາມີຕາລາງຕ່າງໆທີ່ມີຂໍ້ມູນທີ່ມີຕາລາງຫວ່າງເປົ່າ:

 

ວຽກງານແມ່ນເພື່ອເອົາຈຸລັງທີ່ຫວ່າງເປົ່າ, ປ່ອຍໃຫ້ພຽງແຕ່ຈຸລັງທີ່ມີຂໍ້ມູນ.

ວິທີການ 1. ຍາກ ແລະໄວ

  1. ການເລືອກໄລຍະຕົ້ນສະບັບ
  2. ກົດປຸ່ມ F5, ປຸ່ມຕໍ່ໄປ ຈຸດເດັ່ນ (ພິເສດ). ໃນປ່ອງຢ້ຽມທີ່ເປີດ, ເລືອກ ຕາລາງຫວ່າງເປົ່າ(ເປົ່າຫວ່າງ) ແລະຄິກ OK.

    ການເອົາຕາລາງຫວ່າງເປົ່າອອກຈາກໄລຍະໃດໜຶ່ງ

    ຕາລາງຫວ່າງເປົ່າທັງໝົດໃນຂອບເຂດຖືກເລືອກ.

  3. ພວກເຮົາໃຫ້ຄໍາສັ່ງໃນເມນູເພື່ອລຶບຈຸລັງທີ່ເລືອກ: ຄລິກຂວາ- ລຶບຕາລາງ (ລຶບຕາລາງ) ມີ​ການ​ປ່ຽນ​ແປງ​ຂຶ້ນ​.

ວິທີທີ່ 2: ສູດ Array

ເພື່ອງ່າຍ, ໃຫ້ຕັ້ງຊື່ຂອບເຂດການເຮັດວຽກຂອງພວກເຮົາໂດຍໃຊ້ ຜູ້ຈັດການຊື່ (ຜູ້ຈັດການຊື່) ແຖບ ສູດ (ສູດ) ຫຼື, ໃນ Excel 2003 ແລະສູງກວ່າ, ເມນູ ໃສ່ – ຊື່ – ມອບໝາຍ (ໃສ່ - ຊື່ - ກໍານົດ)

 

ຕັ້ງຊື່ໄລຍະ B3:B10 ຫວ່າງ, ຊ່ວງ D3:D10 – ບໍ່ຫວ່າງ. ຊ່ວງຕ້ອງເປັນຂະໜາດດຽວກັນຢ່າງເຂັ້ມງວດ, ແລະສາມາດຕັ້ງຢູ່ບ່ອນໃດກໍໄດ້ທຽບກັບກັນແລະກັນ.

ຕອນນີ້ເລືອກຕາລາງທໍາອິດຂອງຊ່ວງທີສອງ (D3) ແລະໃສ່ສູດທີ່ຫນ້າຢ້ານນີ້ເຂົ້າໄປໃນມັນ:

=IF(ROW() -ROW(NoEmpty)+1>NOTROWS(YesEmpty)-COUNTBLANK(YesEmpty);””;INDIRECT(ADDRESS(ຕໍ່າສຸດ((IF(Empty<>“”),ROW(ເປົ່າ);ROW()) + ROWS(ຫວ່າງເປົ່າ))); LINE()-ROW(ບໍ່ຫວ່າງ)+1); COLUMN(ຫວ່າງເປົ່າ); 4)))

ໃນ​ສະ​ບັບ​ພາ​ສາ​ອັງ​ກິດ​ຈະ​ເປັນ​:

=IF(ROW()-ROW(NoEmpty)+1>ROWS(Empty)-COUNTBLANK(Empty),””,INDIRECT(ADDRESS(small((IF(Empty<>“”),ROW(ຫວ່າງ),),ROW()) +ROWS(HaveEmpty))), ROW()-ROW(NoEmpty)+1),COLUMN(HaveEmpty),4)))

ຍິ່ງໄປກວ່ານັ້ນ, ມັນຕ້ອງຖືກໃສ່ເປັນສູດ array, ie ກົດຫຼັງຈາກ pasting ກະລຸນາໃສ່ (ຕາມປົກກະຕິ) ແລະ Ctrl + Shift + Enter. ດຽວນີ້ສູດສາມາດຄັດລອກໄດ້ໂດຍໃຊ້ການຕື່ມຂໍ້ມູນອັດຕະໂນມັດ (ລາກໄມ້ກາງແຂນສີ ດຳ ໃນມຸມຂວາລຸ່ມຂອງເຊວ) - ແລະພວກເຮົາຈະໄດ້ຮັບຊ່ວງຕົ້ນສະບັບ, ແຕ່ບໍ່ມີຕາລາງຫວ່າງເປົ່າ:

 

ວິທີການ 3. ຟັງຊັນທີ່ກໍາຫນົດເອງໃນ VBA

ຖ້າມີຄວາມສົງໃສວ່າທ່ານມັກຈະຕ້ອງເຮັດຊ້ໍາຂັ້ນຕອນການເອົາຈຸລັງຫວ່າງເປົ່າອອກຈາກຂອບເຂດ, ຫຼັງຈາກນັ້ນມັນກໍ່ດີກວ່າທີ່ຈະເພີ່ມຫນ້າທີ່ຂອງທ່ານເອງສໍາລັບການເອົາຈຸລັງທີ່ຫວ່າງເປົ່າໄປຫາມາດຕະຖານທີ່ກໍານົດໄວ້ຫນຶ່ງຄັ້ງ, ແລະໃຊ້ມັນໃນທຸກໆກໍລະນີຕໍ່ໄປ.

ເພື່ອເຮັດສິ່ງນີ້, ເປີດ Visual Basic Editor (ALT+F11), ໃສ່ໂມດູນເປົ່າໃຫມ່ (ເມນູ ໃສ່ - ໂມດູນ) ແລະຄັດລອກຂໍ້ຄວາມຂອງຟັງຊັນນີ້ຢູ່ທີ່ນັ້ນ:

Function NoBlanks(DataRange As Range) As Variant() Dim N As Long Dim N2 As Long Dim Rng As Range Dim MaxCells As Long Dim Result() As Variant Dim R As Long Dim C As Long MaxCells = Application.WorksheetFunction.Max( _ Application.Caller.Cells.Count, DataRange.Cells.Count) ຜົນໄດ້ຮັບ ReDim(1 ເຖິງ MaxCells, 1 ເຖິງ 1) ສໍາລັບແຕ່ລະ Rng ໃນ DataRange.Cells ຖ້າ Rng.Value <> vbNullString ຫຼັງຈາກນັ້ນ N = N + 1 ຜົນໄດ້ຮັບ(N, 1. ) = Rng.Value End ຖ້າ Rng ຕໍ່ໄປສໍາລັບ N2 = N + 1 ເຖິງ MaxCells ຜົນໄດ້ຮັບ(N2, 1) = vbNullString ຕໍ່ໄປ N2 ຖ້າ Application.Caller.Rows.Count = 1 ຫຼັງຈາກນັ້ນ NoBlanks = Application.Transpose(Result) ອື່ນ NoBlanks = ຜົນໄດ້ຮັບ End If End function  

ຢ່າລືມບັນທຶກໄຟລ໌ ແລະປ່ຽນຄືນຈາກ Visual Basic Editor ເປັນ Excel. ເພື່ອໃຊ້ຟັງຊັນນີ້ໃນຕົວຢ່າງຂອງພວກເຮົາ:

  1. ເລືອກຂອບເຂດທີ່ພຽງພໍຂອງຕາລາງຫວ່າງເປົ່າ, ຕົວຢ່າງ F3:F10.
  2. ໄປທີ່ເມນູ ແຊກ – Function (ໃສ່ - ຫນ້າ​ທີ່​)ຫຼື​ຄລິກ​ໃສ່​ປຸ່ມ​ ໃສ່ຟັງຊັນ (ແຊກຟັງຊັນ) ແຖບ ສູດ (ສູດ) ໃນ Excel ຮຸ່ນໃຫມ່. ຢູ່ໃນປະເພດ ຜູ້ໃຊ້ ກຳ ນົດ (ຜູ້​ໃຊ້​ກໍາ​ນົດ​) ເລືອກຫນ້າທີ່ຂອງພວກເຮົາ ບໍ່ມີບ່ອນຫວ່າງ.
  3. ລະບຸຂອບເຂດແຫຼ່ງທີ່ມີ voids (B3:B10) ເປັນອາກິວເມັນຟັງຊັນ ແລະກົດ Ctrl + Shift + Enterເພື່ອປ້ອນຟັງຊັນເປັນສູດອາເຣ.

:

  • ການລຶບແຖວຫວ່າງທັງໝົດໃນຕາຕະລາງໃນເທື່ອດຽວດ້ວຍ macro ງ່າຍໆ
  • ການເອົາແຖວຫວ່າງເປົ່າທັງໝົດໃນແຜ່ນງານອອກໃນເວລາດຽວກັນໂດຍໃຊ້ສ່ວນເສີມ PLEX
  • ຕື່ມຂໍ້ມູນໃສ່ຕາລາງຫວ່າງເປົ່າທັງໝົດ
  • ມະຫາພາກແມ່ນຫຍັງ, ບ່ອນທີ່ຈະໃສ່ລະຫັດມະຫາພາກໃນ VBA

 

ອອກຈາກ Reply ເປັນ