返回列表 上一主題 發帖

[發問] 讓公式的值,直接帶入儲存格

回復 22# PJChen


上傳檔案好做事~~

TOP

回復 20# 准提部林

准大,
考慮到表格的特性,我想改變一個作法,如圖
以B欄料號為依據,C欄是箱數、D欄是瓶數
找C欄的"箱數"字樣,在下一格空白處,則以B欄為列數準則,Key入公式:=INT(F4/E4)
找D欄字樣"瓶數"在下一格空白處,以B欄為列數為準則,Key入公式:=MOD(F4,E4)
當B欄料號為空白時,則"箱數" & "瓶數"的公式就結束,
否則繼續找下一個"箱數"、"瓶數"繼續Key入公式,
一直到C、D欄全部的"箱數"、"瓶數"都歷遍為止

TOP

回復 20# 准提部林
Dear 准大,

不好意思,我沒有表達明白,F欄遇空格時,表示這段程式就結束了,
空白後的是另一份文件,所以會有不同的程式接續..

所以我想讓F欄遇空格時,停止Range("JQ4:JQ" & xRow).value的動作
請問語法該怎麼表達?
xRow = Cells(Cells.Rows.Count, "F").End(xlUp).Row
Range("JQ4:JQ" & xRow).value = "=AH4-BR4"

TOP

回復 19# PJChen


Range("JQ4:JQ" & xRow).value = "=AH4-BR4"
改
Range("JQ4:JQ" & xRow) = "=IF(F4="""","""",AH4-BR4)"

TOP

回復 17# 准提部林
准大,
我常用到以下的功能,但工作表內的資料很多,F欄常會間隔幾列,又有其他資料接續,
這時程式就會把間隔列也都填滿
xRow = Cells(Cells.Rows.Count, "F").End(xlUp).Row  '看F欄位幾筆資料
Range("JQ4:JQ" & xRow).value = "=AH4-BR4"
Range("JQ4:JQ" & xRow).value  = Range("JQ4:JQ" & xRow).value   '轉換值
請問
要怎麼讓程式Range("JQ4:JQ" & xRow)以F欄為依據,但F欄有空格時,不要往下執行?(即 黃底欄位不要有資料)

TOP

回復 17# 准提部林

謝謝准大,
加了引號後,測試沒問題了

TOP

.Range("B18").Resize(1, xcol) = "=IF(B$9*SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$G$4:$G$55))" & _
    "-SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$BJ$3:$CB$3=""安"")*(飛比!$BJ$4:$CB$55))>=0,""OK""," & _
    "INT(B$9*SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$G$4:$G$55))-SUMPRODUCT((飛比!$F$4:$F$55=B$2)" & _
    "*(飛比!$BJ$3:$CB$3=""安"")*(飛比!$BJ$4:$CB$55))/SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$G$4:$G$55))))"

字串連結用 & _
公式中有雙引號的"安", 須外加一對""安""

TOP

回復 14# jcchiang

不好意思,我在寫公式代入時,因為公式很長,一直出現紅字,是否需要換行?我試著換行,但公式怎麼切都不行,請教這麼長的公式要怎麼換行才可以?
  1.         With W.Sheets("優")
  2.             W.Sheets("優").Activate
  3.                 Range("B15:AI19").ClearContents
  4.                     i = "B15:AI15"
  5.                         xcol = W.Sheets("優").Range(i).Columns.Count
  6.                             .Range("B15").Resize(1, xcol).Value = "=" & "VLOOKUP(B$2,飛比!$F:$FO,COUNTA(飛比!$F$3:$FO$3),)"
  7.                             .Range("B15").Resize(1, xcol).Value = .Range("B15").Resize(1, xcol).Value
  8.                             .Range("B16").Resize(1, xcol).Value = "=" & "IF(B$2="","",SUMIF(飛比!$F:$F,B$2,飛比!$FT:$FT)+1)"
  9.                             .Range("B16").Resize(1, xcol).Value = .Range("B16").Resize(1, xcol).Value
  10.                             .Range("B17").Resize(1, xcol).Value = "=" & "IF(B14-SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$B$4:$B$55))>=0,"",ABS(B14-SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$B$4:$B$55))))"
  11.                             .Range("B17").Resize(1, xcol).Value = .Range("B17").Resize(1, xcol).Value
  12.                             .Range("B18").Resize(1, xcol).Value = "=" & "IF(B$9*SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$G$4:$G$55))-SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$BJ$3:$CB$3="安")*(飛比!$BJ$4:$CB$55))>=0,"OK",INT(B$9*SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$G$4:$G$55))-SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$BJ$3:$CB$3="安")*(飛比!$BJ$4:$CB$55))/SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$G$4:$G$55))))"
  13.                             .Range("B18").Resize(1, xcol).Value = .Range("B18").Resize(1, xcol).Value
  14.                             .Range("B19").Resize(1, xcol).Value = "=" & "IF(B$14*SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$G$4:$G$55))-SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$BI$4:$BI$55))>=0,"OK",INT(B$14*SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$G$4:$G$55))-SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$BI$4:$BI$55))/SUMPRODUCT((飛比!$F$4:$F$55=B$2)*(飛比!$G$4:$G$55))))"
  15.                             .Range("B19").Resize(1, xcol).Value = .Range("B19").Resize(1, xcol).Value
  16.         End With
複製代碼

TOP

回復 14# jcchiang

感謝再次指導,原來我把Range("A4" & xcol)理解錯誤,
這個.Range("A4").Resize(1, xcol).Value才是我要的結果

TOP

回復 13# PJChen
可以執行阿!!
不是有寫:Range("A4" & xcol),如果xcol=5,則為Range("A45")
以你的程式會在Sheets("新")的Range("A45")有個值
如果要向右貼公式改成這樣:
.Range("A4").Resize(1, xcol).Value = "=" & " 多!A3*多!C3" '公式
.Range("A4").Resize(1, xcol).Value = .Range("A4").Resize(1, xcol).Value
但因為公式並沒有將欄位固定,所以公式會變動
Range("A4")= "=" & " 多!A3*多!C3" '公式
Range("B4")= "=" & " 多!B3*多!D3" '公式
Range("C4")= "=" & " 多!C3*多!E3" '公式
以此類推

TOP

        靜思自在 : 不怕事多,只怕多事。
返回列表 上一主題