
想問下唔用VBA有冇可能做到呢個效果


個情況同打牌埋數一樣
有一堆人(幾個至十幾個不等)
有人應該收錢,有人應該畀錢
當然有個最簡單唔使用腦嘅方法就係負數嘅人直接過晒畀正數最大嗰條友,再由嗰條友過返數畀其餘正數嘅人
但而家想限於只有負數嘅人要向正數嘅人過數
想問下有冇formula做到

E.g.
A +88
B +24
C -40
D -72
感謝

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:A999")) Is Nothing Then '自己改個range
Target.Offset(0, 1).Value = Date
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("A2:A999")) Is Nothing Then '自己改個range
Target.Offset(0, 1).Value = Now()
End If
End Sub
=LET(
Col_A, Sheet1!$A:$A,
Col_B, Sheet1!$B:$B,
Col_A2, FILTER(Col_A, Col_A <> ""),
Col_B2, FILTER(Col_B, Col_B <> ""),
Output,TEXTSPLIT(TEXTJOIN(",",TRUE,MAP(Col_A2,Col_B2,LAMBDA(a,b,TEXTJOIN(",",TRUE,SEQUENCE(b) & ";" & a)))),";",","),
IF(ISNUMBER(--Output),--Output,Output))
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
On Error GoTo Finish
Dim r As Long
r = Target.Row
If Intersect(Target, Range("A:E")) Is Nothing Or Not Range("E" & r).Value > 0 Then GoTo Finish
If (Target.Column = 2 And Target.Value > 0) Or (Target.Column = 5 And Range("C" & r).Value > 0) Then
Range("A" & r).Value = DateSerial(Year(Date), 1, 1) + Range("B" & r).Value * 7 - 1
Range("C" & r).Value = Range("A" & r).Value + Range("E" & r).Value - 1
Range("D" & r).Value = WorksheetFunction.RoundUp((Range("C" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
ElseIf (Target.Column = 4 And Target.Value > 0) Or (Target.Column = 5 And Range("D" & r).Value > 0) Then
Range("C" & r).Value = DateSerial(Year(Date), 1, 1) + Range("D" & r).Value * 7 - 1
Range("A" & r).Value = Range("C" & r).Value - Range("E" & r).Value + 1
Range("B" & r).Value = WorksheetFunction.RoundUp((Range("A" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
ElseIf (Target.Column = 1 And Target.Value > 0) Or (Target.Column = 5 And Range("A" & r).Value > 0) Then
Range("C" & r).Value = Range("A" & r).Value + Range("E" & r).Value - 1
Range("B" & r).Value = WorksheetFunction.RoundUp((Range("A" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
Range("D" & r).Value = WorksheetFunction.RoundUp((Range("C" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
ElseIf (Target.Column = 3 And Target.Value > 0) Or (Target.Column = 5 And Range("B" & r).Value > 0) Then
Range("A" & r).Value = Range("C" & r).Value - Range("E" & r).Value + 1
Range("B" & r).Value = WorksheetFunction.RoundUp((Range("A" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
Range("D" & r).Value = WorksheetFunction.RoundUp((Range("C" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
End If
Finish:
On Error GoTo 0
Application.EnableEvents = True
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Application.EnableEvents = False
On Error GoTo Finish
Dim r As Long
r = Target.Row
If Intersect(Target, Range("A:E")) Is Nothing Or Not Range("E" & r).Value > 0 Then GoTo Finish
If (Target.Column = 2 And Target.Value > 0) Or (Target.Column = 5 And Range("C" & r).Value > 0) Then
Range("A" & r).Value = DateSerial(Year(Date), 1, 1) + Range("B" & r).Value * 7 - 1
Range("A" & r).Value = Range("A" & r).Value - (Weekday(Range("A" & r).Value, 2) - 1)
Range("C" & r).Value = Range("A" & r).Value + Range("E" & r).Value - 1
Range("D" & r).Value = WorksheetFunction.RoundUp((Range("C" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
ElseIf (Target.Column = 4 And Target.Value > 0) Or (Target.Column = 5 And Range("D" & r).Value > 0) Then
Range("C" & r).Value = DateSerial(Year(Date), 1, 1) + Range("D" & r).Value * 7 - 1
Range("C" & r).Value = Range("C" & r).Value - (Weekday(Range("C" & r).Value, 2) - 1)
Range("A" & r).Value = Range("C" & r).Value - Range("E" & r).Value + 1
Range("B" & r).Value = WorksheetFunction.RoundUp((Range("A" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
ElseIf (Target.Column = 1 And Target.Value > 0) Or (Target.Column = 5 And Range("A" & r).Value > 0) Then
Range("C" & r).Value = Range("A" & r).Value + Range("E" & r).Value - 1
Range("B" & r).Value = WorksheetFunction.RoundUp((Range("A" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
Range("D" & r).Value = WorksheetFunction.RoundUp((Range("C" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
ElseIf (Target.Column = 3 And Target.Value > 0) Or (Target.Column = 5 And Range("B" & r).Value > 0) Then
Range("A" & r).Value = Range("C" & r).Value - Range("E" & r).Value + 1
Range("B" & r).Value = WorksheetFunction.RoundUp((Range("A" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
Range("D" & r).Value = WorksheetFunction.RoundUp((Range("C" & r).Value - DateSerial(Year(Range("A" & r).Value), 1, 1) + 1) / 7, 0)
End If
Finish:
On Error GoTo 0
Application.EnableEvents = True
End Sub