- 帖子
- 8
- 主題
- 2
- 精華
- 0
- 積分
- 10
- 點名
- 0
- 作業系統
- win7
- 軟體版本
- office 2007
- 閱讀權限
- 10
- 性別
- 男
- 來自
- 桃園
- 註冊時間
- 2014-12-12
- 最後登錄
- 2016-4-13
|
[發問] 想請教如何用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)
|
|