iT邦幫忙

0

Excel VBA 尋找字串並計算問題

  • 分享至 

  • xImage

先在此感謝閱讀與幫忙

1.需求(分頁一,項目名稱旁邊數值) - (分頁二,A1儲存格數值)
2.需搜尋(分頁一 B欄字串)項目名稱,此字串在B欄,但不是固定在B2

嘗試後所遇到的問題,如果項目名稱在B2儲存格,則使用Offset(-1, 1)可選取旁邊C2數值。

但是,項目名稱在B欄其他位置,使用Offset(-1, 1),會跑到其他儲存格。

以下列出嘗試寫出的VBA,求幫忙修善,非常感謝。

https://ithelp.ithome.com.tw/upload/images/20210103/20131103r5VCRPQtW6.jpg

Sub TEST()
Sheets("分頁二").Select
If Range("A1") <> "" Then
    Sheets("分頁一").Select
    Range("B1").Select
        For i = 2 To 6
            If Cells(i, "B").Value = 項目名稱 Then
            Cells(i, "B").Offset(-1, 1).Copy
            Range("D1").PasteSpecial xlPasteValuesAndNumberFormats
                  If Cells(i, "B").Value = 項目名稱 Then
                  Cells(i, "B").Offset(-1, 1).Select
     ActiveCell.FormulaR1C1 = Range("D1") - Sheets("分頁二").Range("A1")
                  Range("D1").ClearContents
                End If
                Exit For
             End If
        Next
End If
End Sub
shock168 iT邦新手 5 級 ‧ 2021-01-05 02:36:23 檢舉
Sub Test()
Dim rngFind As Range

Set rngFind = Worksheets("分頁一").UsedRange.Find("項目名稱")

If Not rngFind Is Nothing Then
With rngFind
.Next.Value = .Next.Value - Worksheets("分頁二").Range("A1").Value
End With
End If
End Sub
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

0
Neish
iT邦研究生 1 級 ‧ 2021-01-04 16:05:11
最佳解答

試試看吧!

Sub TEST()
       
    Worksheets("分頁一").Columns("B:B").Find("項目名稱").Offset(0, 1) = Worksheets("分頁一").Columns("B:B").Find("項目名稱").Offset(0, 1) - Worksheets("分頁二").Range("A1")
    
End Sub

Worksheets("分頁一").Columns("B:B").Find("項目名稱").Offset(0, 1) => 找到"項目名稱"的旁邊一格

非常有幫助,謝謝回答。

0
shock168
iT邦新手 5 級 ‧ 2021-01-05 02:38:04
Sub Test()
    Dim rngFind As Range
    
    Set rngFind = Worksheets("分頁一").UsedRange.Find("項目名稱")
        
    If Not rngFind Is Nothing Then
          With rngFind
            .Next.Value = .Next.Value - Worksheets("分頁二").Range("A1").Value
          End With
    End If
End Sub

因需求不是整頁面字串搜尋,不過還是很謝謝你,讓我有其他啟發

我要發表回答

立即登入回答