[算表] vba一行改成多行

作者: instarfree (Elisa)   2023-05-30 03:45:46
軟體:excel
版本:2019
使用chatgpt寫VBA
只寫一行是正確的
請他運算整張算表就開始錯誤連篇..
希望版上大大協助
Sub FillVBasedOnOffset()
Dim rngNumbers As Range
Dim rngOutput As Range
Dim targetNumber As Integer
Dim outputCount As Integer
' 設置數字範圍和輸出範圍
Set rngNumbers = Range("I1:AL1")
Set rngOutput = Range("I2:AL2")
' 儲存 H2 的數值
Dim h2Value As Variant
h2Value = Range("H2").Value
' 清空輸出範圍
rngOutput.ClearContents
' 獲取目標數字和輸出次數限制
targetNumber = Range("H2").Value + 2
outputCount = Range("B2").Value
' 填充V
For Each cell In rngNumbers
If cell.Value = targetNumber Then
If outputCount > 0 Then
cell.Offset(1).Value = "V"
outputCount = outputCount - 1
End If
targetNumber = targetNumber + 3
End If
Next cell
' 恢復 H2 的數值
Range("H2").Value = h2Value
End Sub
https://imgur.com/44RX0oR
實際用VBA操作後2列是正確的
如何改成可以運行在第2列~第58列
目標
開始日期+2則打V 之後每個三天打V(打勾日期+3)
打勾的次數不超過B欄的數字
如果有可以用公式的解法更好(可以在googlesheet上執行)
但是CHATGPT寫不太出來...
作者: freePrester (Prester)   2023-05-30 06:45:00
https://i.imgur.com/lWlH8uX.pngC2=IF(AND((COLUMN()-COLUMN($B2))+2-$B2>0,MOD((COLUMN()-COLUMN($B2))-$B2-2,3)=0,INT((COLUMN()-COLUMN($B2)-$B2+1)/3)>0,INT((COLUMN()-COLUMN($B2)-$B2+1)/3)<=IF(ISBLANK($A2),99,$A2)),"V","")修一下… https://i.imgur.com/atjc3JJ.pngC2=IF(AND(C$1+2-$B2>0,MOD(C$1-$B2-2,3)=0,INT((C$1-$B2+1)/3)>0,INT((C$1-$B2+1)/3)<=IF(ISBLANK($A2),99,$A2)),"V","")法一不用看行1的數字,法二要看。沒打次數預設99次更正:列1可以再精簡,早上腦袋還沒醒= ==IF(AND(C$1+2-$B2>0,MOD(C$1-$B2-2,3)=0,(C$1-$B2+1)/3>0,(C$1-$B2+1)/3<=IF(ISBLANK($A2),99,$A2)),"V","")
作者: kinomon (奇諾 Monster)   2023-05-30 09:29:00
也可以用choose搭配陣列溢出https://i.imgur.com/wflIkoB.jpg 類似這樣
作者: instarfree (Elisa)   2023-06-01 15:53:00
謝謝F大跟P大的回覆 兩個都可以!!

Links booklink

Contact Us: admin [ a t ] ucptt.com