Board logo

標題: [發問] 跨工作頁查找某欄位的值 [打印本頁]

作者: JT1221    時間: 2020-3-27 17:56     標題: 跨工作頁查找某欄位的值

各位版大好

遇到一個問題和寫法請各先進指導 !! 先感謝大家~~

問題:第二個工作頁的 G46 = 第一個工作頁G56欄位 (因為『欄』是固定的,但『列』要用查找的,就是G欄的倒數三列;而且實際工作頁有很多),再麻煩大家幫忙!  謝謝

以下是自己研究的,但都找不到我要的欄位
Public Sub Sum()
        
        For k = 7 To 31
            
            Sheets("訂單明細 -4月").Cells(500, k).End(xlUp).Offset(3) = Sheets("訂單明細 -3月").Cells(500, k).End(xlUp).Offset(2).Value
            Sheets("訂單明細 -4月").Cells(500, k).End(xlUp).Offset(2) = Sheets("訂單明細 -3月").Cells(500, k).End(xlUp).Offset(1).Value
            Sheets("訂單明細 -4月").Cells(500, k).End(xlUp).Offset(1) = Sheets("訂單明細 -3月").Cells(500, k).End(xlUp).Value
   
        Next

End Sub
作者: n7822123    時間: 2020-3-28 09:14

本帖最後由 n7822123 於 2020-3-28 09:19 編輯

回復 1# JT1221


你知道End(xlup)的意思嗎???  End是用來找 "有值" 的儲存格

你"訂單明細 -4月"裡面 46,47,48列本身是沒有值的,

但是程式填完之後,就變成有值了,再用End就會抓到不同列!

不會有人同時用End用法然後又填值,因為你要很清楚現在"程式"已經把值填到哪一格,

依你的邏輯,修改你的寫法如下(請先把 "訂單明細 -4月" G46,G47,G48的公式刪除)


Sub EX1()
Sheets("訂單明細 -4月").Activate
With Sheets("訂單明細 -3月")
  For C = 7 To 31
    Cells(500, C).End(xlUp).Offset(3) = .Cells(500, C).End(xlUp).Offset(-2)
    Cells(500, C).End(xlUp).Offset(1) = .Cells(500, C).End(xlUp).Offset(-1)
    Cells(500, C).End(xlUp).Offset(1) = .Cells(500, C).End(xlUp)
  Next
End With
End Sub



這樣寫程式別人大概也很難懂,因為不會有人邊用End邊填值.......

如果把上面3行程式對調結果會大不同,提供一個比較"正常"的寫法如下



Sub EX2()
'找尋F攔 "庫存=已排生產-客戶訂單" 這列
R3 = ['訂單明細 -3月'!F500].End(xlUp).Row
R4 = ['訂單明細 -4月'!F500].End(xlUp).Row
Sheets("訂單明細 -4月").Activate
With Sheets("訂單明細 -3月")
  For C = 7 To 31
    Cells(R4 + 3, C) = .Cells(R3 + 3, C)
    Cells(R4 + 4, C) = .Cells(R3 + 4, C)
    Cells(R4 + 5, C) = .Cells(R3 + 5, C)
  Next
End With
End Sub

作者: JT1221    時間: 2020-4-1 10:21

回復 2# n7822123

感謝N大的回覆 !  已經可以用使用,謝謝

End(xlUp) 的寫法我大概知道,但因為我原本寫法在逐步執行的時候是看不到現在做到哪裡,所以一直卡關。
原來的寫法是依自己表格的需求,在網路上查找相關的寫法,就變得很奇怪,而且一直抓不到我要的資料。

再次感謝幫忙 !!  〈(_ _)〉
作者: JT1221    時間: 2020-4-1 10:30

回復 2# n7822123

另外請教一下!

R3 = ['訂單明細 -3月'!F500].End(xlUp).Row 中, 括弧這個用法的意思是在『訂單明細-3月 F500 』這個位置的意思嗎?  ['訂單明細 -3月'!F500]
這個用法哪裡有範例或寫法嗎?  網路上查不到,都是用sheets + cells 或者 Range去指定位置。
作者: n7822123    時間: 2020-4-1 11:56

回復 4# JT1221

這是簡寫

R3 = ['訂單明細 -3月'!F500].End(xlUp).Row

等同於

R3=sheets("訂單明細 -3月").range("F500").End(xlUp).Row





歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)