返回列表 上一主題 發帖

[發問] 想請教如何用VBA判斷關鍵字,並複製一列

[發問] 想請教如何用VBA判斷關鍵字,並複製一列

本帖最後由 hasrhgni 於 2014-12-19 16:54 編輯

各位高手好,我想請教一下
我有一份關鍵字清單並已分類好
現在有一份課程名稱要來查詢出關鍵字
目前可查出關鍵字後顯示在右欄並用","逗號分開並補上第二個關鍵字
但我現在想將查出的關鍵字第一次結果顯示在右欄並將第二個關鍵字能夠往下複製同一列後並在右欄顯示第二個關鍵字(複製後的第一個關鍵字蓋過去)
如果查出有三次結果就往下複製三列
不知我該如何寫,我卡很久了!!!
Sub Macro1()
Dim strSA As String      '定義字串變數,用來承接範圍名稱
Dim strC As String
Dim strA As String
Dim strca As String
Dim Dilimiter As String

strSA = "class_name" '待搜尋字串的範圍名稱(橘色範圍)
strC = "keyword"        '欲在(紅色範圍)中搜尋的關鍵字(藍色範圍)
strA = "Answer"       '用來承接答案的範圍名稱(紅色範圍)
strca = "catalog"
Dilimiter = ","       '用來做為區隔符號的變數,方便後續文書處理用


For i = 1 To Range(strSA).Rows.Count 'Range("範圍名稱")就是一個工作表中的"範圍名稱"所代表的範圍
'第一個迴圈代表從第一筆字串搜尋到到最後一筆字串

  Range(strA).Cells(i, 1).Value = ""   '設定承接答案用的儲存格為空值,避免重複按按鈕時資料累加

    For j = 1 To Range(strC).Rows.Count '.Rows.Count 為總資料行數
    '第二個迴圈代表從第一個關鍵字開始尋找 到最後一個關鍵字

        If InStr(Range(strSA).Cells(i, 1), Range(strC).Cells(j, 1).Value) <> 0 Then
        
            ' InStr(S,F)為傳回F字串在S字串中的第幾個字,若無則傳回 0
            '.Cells(row,column)為儲存格中的相對位置 .Value為儲存格中的值
            
            If Range(strA).Cells(i, 1).Value = "" Then  '若承接答案用的儲存格為空,則直接放入關鍵字
                 
                 Range(strA).Cells(i, 1).Value = Range(strC).Cells(j, 1).Offset(0, -1).Value
                 
            Else    '若不為空值則保留原來資料 插入分隔符號 再插入新資料
                        
                        Range(strA).Cells(i, 1).Value = Range(strA).Cells(i, 1).Value
                        ActiveCell.Rows("1:1").EntireRow.Select
                        Selection.Copy
                        Selection.Insert Shift:=xlDown
                        Range(strA).Cells(i, 1).Select
                        ActiveCell.Value = Range(strC).Cells(j, 1).Offset(0, -1).Value
                        Range(strA).Cells(i, 1).Select
                        

            End If
        End If
    Next
Next

End Sub
201407-12_list2.zip (132.41 KB)
努力學習

非常感謝 luhpro  的幫忙,那確實是我要的,但我不知是否還有方式,能將第C欄和之後的欄出現後的關鍵字能:
1.自動複制A欄後並插入一列
2.並將C欄的關鍵字補在B欄
這樣就只有2欄的資料,A欄會因B欄所出現的關鍵字自動新增A欄的課程名稱
努力學習

TOP

非常感謝 luhpro  的幫忙,那確實是我要的,但我不知是否還有方式,能將第C欄和之後的欄出現後的關鍵字能:
1.自動複制A欄後並插入一列
2.並將C欄的關鍵字補在B欄
這樣就只有2欄的資料,A欄會因B欄所出現的關鍵字自動新增A欄的課程名稱

課程名稱       
牙周病科雜誌暨病例討論會                 綜合類
牙周病科雜誌暨病例討論會                牙周病類
齒顎矯正科雜誌暨病例討論會                牙齒矯正類
齒顎矯正科雜誌暨病例討論會                綜合類
牙髓病科雜誌討論會暨病例討論會       綜合類
口腔顎面外科雜誌討論會                口腔外科學類
牙體復形科雜誌討論會                口腔補綴學
努力學習

TOP

這確實就是我要的,我要跪拜您這位大師了!
太感恩了,謝謝!!!
努力學習

TOP

luhpro 大師您好!
不知我是否可以加入個判斷,如果分類大於2筆時多複製一筆為"綜合類"
努力學習

TOP

真是太感謝 luhpro 大師了!
努力學習

TOP

        靜思自在 : 每天無所事事,是人生的消費者,積極、有用才是人生的創造者。
返回列表 上一主題