【Excel】智能給單元格增加行高 - VBA解法

2021-03-01 Word技巧達人

這個小夥伴的問題是D列字數有多有少,怎樣根據行數智能調整到前後有一點點間距,如下圖所示。有小夥伴覺得,上次提到的公式太麻煩了,我想一步到位,這怎麼辦呢?這就需要請出VBA來幫助我們了。如果你沒有使用過VBA,那麼選項卡是找不到VBA的,你需要把開發工具放到選項卡上。添加步驟:(Excel 2007)文件(左上角圓形按鈕)——Excel選項——常用——在功能區顯示"開發工具"選項卡(Excel 2010及以上)文件——選項——自定義功能區——開發工具註:如果你使用WPS,需要安裝VBA才能運行。而且WPS的VBA某些語法和Excel的不一樣。這裡使用Excel的VBA來解釋。這個問題的思路是根據字符數決定給多大行距。比如10個字符給1行,11個字符給兩行。我們把小for找來,說小for啊,我想從第二行開始遍歷所有有字符的行(此文件是97),然後每10個字符給一行,下一行也這樣。要計算字符數,我們想到了len。VBA中len的功能和工作表函數中len的功能是一樣的,都是計算某單元格字符的長度。每10個字符給一行,意味著不到10個字符也要給一行,所以需要對字符長度除以10以後用ROUNDUP函數。由於VBA裡沒有ROUNDUP函數,故需要調用該應用的工作表函數,即在ROUNDUP前面輸入Application.WorksheetFunction.,這樣就可以知道這個單元格需要多少行了。由於需要上下留空,故上面計算完以後需要+1(加多少由自己決定)。計算完畢以後再乘14.25(默認行高,可隨意更改)在VBA裡,行高用Rows().RowHeight代替,列寬可以用Columns().ColumnWidth代替,括號裡均填數字。經測試,我們發現10個漢字字符所需列寬為20。根據這個思路,我們可以寫下面的代碼:
Sub ss()Dim i As Long '此行可以不要,寫上僅為個人習慣Columns(4).ColumnWidth = 20For i = 2 To 97Rows(i).RowHeight = 14.25 * (Application.WorksheetFunction.RoundUp(Len(Range("D" & i)) / 10, 0) + 1)NextEnd Sub

註:1、通過VBA操作後的行高無法撤銷。所以建議大家如果需要寫VBA代碼,建議自己備份一個數據。(後記)寫完以後,有的小夥伴就哭了。嗚嗚嗚,這單詞也太長了吧,雖然寫出來能看懂,但是下次用就記不住了。對於VBA來說,如果不知道對工作表的某些操作怎麼用代碼來寫,我們可以錄製宏。比如這裡的行高,我不記得怎麼寫了,我們可以錄製宏。錄製宏的方法如下面視頻所示:通過錄製宏,我們知道Rows(「1:1」).RowHeight代表第一行的行高。由於裡面的1是變量,所以我們把這個複製過來改為Rows(i).RowHeight即可。Application.WorksheetFunction這個需要記住Application,然後輸入點以後會彈出下拉框,這樣只需嘗試輸入前面幾個字母就可以出來全部,按tab鍵可以輸入完整單詞。操作方法如下面視頻所示。


好啦今兒分享到這裡,祝大家好運!

喜歡的同鞋請轉發、點讚!

掃描下方二維碼,加入微信交流群~

歡迎朋友們分享辦公技巧,郵箱:wordjqdr@126.com

想要學習更多Word排版技巧,單擊【閱讀原文】來參加【Word2016快速入門與提高】課程吧!

相關焦點

  • VBA代碼大全029:用vba修改excel單元格區域range對象的行高和列寬
    在excel中單個單元格的行高和列寬是與單元格所在的行的行高和單元格所在列的列寬一致的。我們無法單獨修改某個單元格的行高或列寬,只能通過修改單元格所在行的行高和所在列的列寬來實現單個單元格的行高和列寬的修改。
  • excel內容自動調整列寬行高
    有學習Office軟體Excel的同學反映在單元格中輸入內容時,如果內容長度超過了單元格的寬度高度
  • 高級:excel行高、列寬自適應調整
    1、在excel中錄入數據時因為默認的單元格行高和列寬都很小(默認行高:14.25;默認寬度:8.38),往往會出現輸入較多的文字變成多行之後只能看到第一行或者第二行等。2、此時為了單元格所有內容都能夠全部顯示,可以通過調整行高或者列寬兩種方式處理,單獨一個單元格調整行高有三種方式:    a、滑鼠移到要調整高度的單元格所在行左端序號下邊界
  • 【office辦公技巧】教你設置excel內容自動調整列寬行高
    ,如果內容長度超過了單元格的寬度高度,則超過的部分將無法顯示出來或者不太美觀。那麼現在辦公自動化培訓機構老師教你設置excel輸入內容超過單元格寬度時自動調整列寬行高,通過設置單元格的"自動調整列寬"或"自動調整行高"格式,然後讓輸入的內容超過單元格寬度時自動調整列寬行高,下面案例以Excel2019為例。
  • Excel隔行調整行高也有很多門道
    一、直接定位法先在表格的最後增加一個輔助列。在該列的第一行的單元格中輸入數字「1」,然後在第二行的單元格中輸入公式「=1/0」,回車後會得到一個「#DIV/0!」的錯誤提示。現在選中這兩個單元格,將滑鼠定位於選區右下角的填充句柄,按下滑鼠右鍵,向下拖動至最後一行。鬆開滑鼠後,在彈出的快捷菜單中選擇「複製單元格」的命令。
  • excel隨機生成漢字比較經典的兩個案例展示
  • excel單元格的強制換行(加強版)
    單元格如果讓文字換行顯示有兩種方法,一種是自動換行,另一種是強制換行,關於自動換行同學們應該都會,今天要學習的是在單元格裡強制換行的方法,不只是大家熟悉的按
  • Excel合併單元格的三種統計方法
    營長說昨天在微信群中,有夥伴諮詢,如何對有合併單元格的表格進行匯總求和。今天營長將Excel中合併單元格常見的三種處理方法介紹給你。
  • 【Excel分享】if函數的基本用法
    中if函數是最經常用到的判斷函數,通過它可以減少很多繁瑣複雜的工作,判斷單元格內容滿足什麼條件則對應返回相應的值。excel中的if函數是判斷函數,表達的意思是當滿足某條件時,返回一個值,否則返回另一個值語法:if(logical_test,[value_if_true],[value_if_false]) 第1參數:logical_test表示要判斷的條件 第2參數:value_if_true表示當滿足判斷的條件時返回的值 第3參數:value_if_false表示當不滿足判斷的條件時返回的值
  • Excel合併單元格最怕這種函數公式,即使大小不同照樣瞬間搞定!
    合併單元格的困擾嗎?但是你還是不可避免的要處理各種帶合併單元格的報表,怎麼辦呢?問題描述:要求在下面的報表A列中自動填寫序號,按照B列的組別在合併單元格中生成1、2、3、.你會怎麼做呢?解決這類問題要了解三個關鍵點:1、合併單元格中只有最左上角有實際值,其餘地方為空;2、寫公式的時候注意公式所在位置與引用位置的關係,靈活混合引用;3、輸入公式之前記得先選中所有合併單元格區域,使用Ctrl+Enter組合鍵按區域輸入,才不會報錯。寫文字說半天不如動手操作讓你親眼看過程,動圖演示如下圖所示。
  • Excel | 單元格內容換行的兩種方法
    清晨,與您相約前幾天,同事填寫表格,單元格內的文字要換行,按ENTER鍵怎麼也不能實現
  • excel畫畫教程了解下?
    小編是用的excel2010,其他版本的excel和wps也都可以哦。Step2:設置行高和列高,保證單元格為正方形。先按住Ctrl+A(或者點擊表格左上角)全選單元格,設置行高和列寬使單元格為正方形(例如:列寬0.5,行高6),最好保證相同的像素點。單元格設置越小,最後的圖像解析度越高。
  • Excel VBA入門教程2 程序執行/工作簿/工作表/單元格
    詳見以下視頻:二、單元格的操作1)單元格操作:最常使用的單元格表示方法有兩個:Cells、 Range 從比較以下兩個單元格Cells(1,3) ,當程序執行時,單元格就會顯示出"這裡是Range(A3)" 這句話       第4行     我們把 "這裡是Cells(1,3)" 賦值到Cells(1,3) 單元格中,當程序執行時,單元格就會顯示出這句話 2)  執行程序,A列3行中出現  "這裡是Range(A3)"  , 第一行第三列中出現了"這裡是Cells(1,3)" 。
  • EXCEL單元格連接基礎教程
    用法一:單元格內容的連接,用公式=單元格地址&單元格地址
  • 如何增加 Excel 單元格內的行間距?
    既然把 Excel 當 Word 用,那麼就要用出點樣子來,比如單元格文本自動換行以後,默認的行間距通常太小,閱讀起來不方便,如何能根據需要將行間距調大呢?案例 :將下圖 1 的所有列設置為可以隨著列寬自動換行,且根據需要,適當調大單元格的行間距。效果如下圖 2 所示。1.
  • Excel VBA Clear方法清除單元格信息
    Clear方法清除單元格信息Clear方法清除單元格區域所有信息,包括備註、超連結、公式、格式等。Clear和Delete的方法的主要區別是:Clear的作用就是清除單元格的數據、格式等所有信息,,只保留空白單元格。而Delete方法刪除的是單元格對象,Delete方法刪除的對象周圍相鄰的單元格會進行補充,而Clear方法不會。
  • VBA判斷單元格內容格式、顏色、合併單元格
    VBA.IsError([a5]) Then If Application.WorksheetFunction.IsError([a5]) Then [b5] = "錯誤值" End If End Sub Sub d11() [b6] = ""
  • 《神奇的VBA》編程:批量拆分單元格數據
    批量對單元格區域內每個單元格中的數據按照一定的規則進行拆分是職場工作中經常碰到的操作。
  • EXCEL--多條件取值終極解法SUMPRODUCT高級應用
    上次介紹了一個lookup進行多條件判斷取值的解法,不過今天突然發現那個解法有個嚴重的缺陷,就是只能解a<=A<b,就是當條件都是大於等於較小值且小於較大值的情況
  • Excel-VBA-數組-03-數組與Excel單元格間的讀寫
    >軟體:Excel 2016有兩個Excel工作表,表1:Excel讀出;表2:數組寫入,為空表實現功能1,讀取Excel中信息:實現功能2,數組寫入Excel表格中arr1寫入表2的A1-C1單元格區域