Note: The other languages of the website are Google-translated. Back to English

 如何基於Excel中的列標題選擇列?

假設您有一個很大的工作表,其中包含多個列,現在,您想根據列標題名稱選擇特定的列。 要在大型工作表中逐列查找會浪費很多時間,本文將介紹一種快速的方法來解決Excel中的這一問題。

根據列標題名稱和VBA代碼選擇一個列


根據列標題名稱和VBA代碼選擇一個列

以下VBA代碼可以幫助您根據特定的標題名稱選擇列,請按以下步驟操作:

1。 按住 ALT + F11 鍵打開 Microsoft Visual Basic for Applications 窗口。

2。 點擊 插入 > 模塊,然後將以下代碼粘貼到 模塊 窗口。

VBA代碼:根據列標題名稱選擇列:

Sub FindAddressColumn()
'Updateby Extendoffcie
    Dim xRg As Range
    Dim xRgUni As Range
    Dim xFirstAddress As String
    Dim xStr As String
    On Error Resume Next
    xStr = "Name"
    Set xRg = Range("A1:P1").Find(xStr, , xlValues, xlWhole, , , True)
    If Not xRg Is Nothing Then
        xFirstAddress = xRg.Address
        Do
            Set xRg = Range("A1:P1").FindNext(xRg)
            If xRgUni Is Nothing Then
                Set xRgUni = xRg
            Else
                Set xRgUni = Application.Union(xRgUni, xRg)
            End If
        Loop While (Not xRg Is Nothing) And (xRg.Address <> xFirstAddress)
    End If
    xRgUni.EntireColumn.Select
End Sub

備註:在上面的代碼中, A1:P1 是您要從中選擇列的標題範圍,並且“姓名”中的“ xStr =“名稱” 是要基於其選擇列的標題名稱。 請根據需要更改它們。

3。 複製並粘貼代碼後,請按 F5 鍵以運行此代碼,並且具有特定標題名稱的所有列均已被選中,請參見屏幕截圖:


最佳辦公效率工具

Kutools for Excel 解決了你的大部分問題,並將你的生產力提高了 80%

  • 重用: 快速插入 複雜的公式,圖表 以及您以前使用過的任何東西; 加密單元 帶密碼 創建郵件列表 並發送電子郵件...
  • 超級公式欄 (輕鬆編輯多行文本和公式); 閱讀版式 (輕鬆讀取和編輯大量單元格); 粘貼到過濾範圍...
  • 合併單元格/行/列 不會丟失數據; 拆分單元格內容; 合併重複的行/列...防止細胞重複; 比較範圍...
  • 選擇重複或唯一 行; 選擇空白行 (所有單元格都是空的); 超級查找和模糊查找 在許多工作簿中; 隨機選擇...
  • 確切的副本 多個單元格,無需更改公式參考; 自動創建參考 到多張紙; 插入項目符號,複選框等...
  • 提取文字,添加文本,按位置刪除, 刪除空間; 創建和打印分頁小計; 在單元格內容和註釋之間轉換...
  • 超級濾鏡 (將過濾方案保存並應用於其他工作表); 高級排序 按月/週/日,頻率及更多; 特殊過濾器 用粗體,斜體...
  • 結合工作簿和工作表; 根據關鍵列合併表; 將數據分割成多個工作表; 批量轉換xls,xlsx和PDF...
  • 超過 300 項強大的功能. 支持 Office / Excel 2007-2021 和 365。支持所有語言。 在您的企業或組織中輕鬆部署。 完整功能 30 天免費試用。 60 天退款保證。
kte選項卡201905

Office選項卡為Office帶來了選項卡式界面,使您的工作更加輕鬆

  • 在Word,Excel,PowerPoint中啟用選項卡式編輯和閱讀,發布者,Access,Visio和Project。
  • 在同一窗口的新選項卡中而不是在新窗口中打開並創建多個文檔。
  • 將您的工作效率提高 50%,每天為您減少數百次鼠標點擊!
officetab底部
按評論排序
留言 (6)
還沒有評分。 成為第一位評論!
網站主持人對此評論進行了最小化
這很好,但是如果我想從 Sheet1 中復制 CustomerName、OrderNumber、OrderDate、FulfillmentDate、OrderStatus 以及更多列,該怎麼辦。
如何僅指定需要復製到另一個工作表的列? 這似乎只指定一列。
我已經嘗試了一些東西,但問題更多的是列在源表上的順序不一定相同。 Sheet1 中的源數據從 Windows 剪貼板粘貼到 Excel 工作表。

它可能是 CustomerName、OrderDate、OrderNumber、OrderStatusm FulfillmentDate 或其他一些訂單。

我需要將它們以特定順序複製到新工作表中,因為 Sheet2 中有公式應用於從 Sheet1 複製到 Sheet2 的內容。

除了在從 Windows 剪貼板粘貼後移動列之外,我無法弄清楚這一點。

如果可能,請提供幫助。

不過,謝謝你。
網站主持人對此評論進行了最小化
將 xRg 調暗為範圍
將 xRgUni 調暗為範圍
將 xFirstAddress 調暗為字符串
將 xStr 調暗為字符串

是否聲明了變量。

因此,要再次將上述代碼用於另一列,您必須聲明新變量。

將 xRg2 調暗為範圍
將 xRgUni2 調暗為範圍
將 xFirstAddress2 調暗為字符串
將 xStr2 調暗為字符串

並在代碼等中用 xRg2 替換 xRg 的每個實例。 那有意義嗎?
網站主持人對此評論進行了最小化
嗨,看起來很棒的工作。 但我收到編譯錯誤:突出顯示“.Union”時參數不是可選的。 我該怎麼辦?
網站主持人對此評論進行了最小化
謝謝 - 起初它似乎工作,但後來我注意到它不包括第一個找到的列 - 它從第二個開始。

這是可以解釋的:您設置 xRg 兩次,但不包括第一個。

TBH:最初我認為它工作得很好,但後來出現了那個“錯誤”,我不得不弄清楚為什麼......

我將其修復如下:(在 Excel 中,註釋將變為綠色並顯示我的編輯:'***)



子 FindAddressColumn()

'Updateby Extendoffcie

將 xRg 調暗為範圍

將 xRgUni 調暗為範圍

將 xFirstAddress 調暗為字符串

將 xStr 調暗為字符串

在錯誤恢復下一頁
xStr =“名稱”
設置 xRg = Range("A1:P1").Find(xStr, , xlValues, xlPart, , , True)

如果不是 xRg 什麼都不是,那麼

xFirstAddress = xRg.Address

Do

如果 xRgUni 什麼都不是,那麼

Set xRgUni = Range(xFirstAddress) '*** 使用第一個找到的範圍

其他

設置 xRgUni = Application.Union(xRgUni, xRg)

如果結束



Set xRg = Range("A1:P1").FindNext(xRg) '*** 現在搜索第二個/下一個



循環 While (Not xRg Is Nothing) And (xRg.Address <> xFirstAddress)

如果結束

xRgUni.EntireColumn.Select

END SUB




這現在對我有用,但如果我忽略了任何事情,我希望向你學習。
網站主持人對此評論進行了最小化
嗨,你能為肖恩下面提到的問題推薦宏嗎
網站主持人對此評論進行了最小化
謝謝你救了我的一天!
這裡還沒有評論
留下你的意見
以訪客身份發帖
×
評價此帖子:
0   字符
推薦地點

關注我們

版權所有©2009 - 萬維網。extendoffice.com。 | 版權所有。 供電 ExtendOffice。 |
Microsoft和Office徽標是Microsoft Corporation在美國和/或其他國家的商標或註冊商標。
受Sectigo SSL保護