任何人都知道如何阻止输入中的单元格(也将其灰显),例如单元格A1:C1 =“否”,那么直到说出F1的行的其余部分将变灰并被阻止输入?我希望在VBA中这样做,但如果有其他更简单的方法,请告诉我!谢谢!
嘀嘀
答案 0 :(得分:0)
如评论中所提到的,请使用以下子
来使用工作簿更改事件Sub test()
If Worksheets("Sheet1").Range("A1").Value = "no" And Worksheets("Sheet1").Range("B1").Value = "no" And Worksheets("Sheet1").Range("C1").Value = "no" Then
Worksheets("Sheet1").Range("D1:F1").Interior.Color = RGB(220, 220, 220)
Worksheets("Sheet1").Range("D1:F1").Locked = True
Worksheets("Sheet1").Protect
End If
End Sub
答案 1 :(得分:0)
只是为了展示一种不同的方法:
将它放在工作表代码选项卡中:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not (Intersect(Target, Me.Range("D1:F1")) Is Nothing) And Me.Evaluate("AND(LOWER(A1:C1)=""no"")") Then Me.Range("A1").Select
End Sub
要将它们变灰,最好是条件格式化:
Range: =$D$1:$F$1
Formula: =AND(LOWER($A$1:$C$1)="no")
LOWER
区分大小写,则可以跳过Private Sub Worksheet_Change(ByVal Target As Range)
Dim a As Boolean
a = Me.Evaluate("AND(LOWER(A1:C1)=""no"")")
If a <> Me.Range("D1").Locked Then
Me.Unprotect
Me.Range("D1:F1").Locked = a
Me.Protect
End If
End Sub
唯一的结果是:如果A1:C1是&#34;没有&#34;您仍然可以将范围粘贴到单元格(不是D1:F1中的任何一个),其中还包括已锁定的单元格。
最大的专业人士是:这也适用于共享工作簿(因为不需要锁定/解锁工作表)
修改强>
如果需要保护细胞,那么这样的事情就可以了:
val spark = SparkSession.builder().master("local").appName("test").getOrCreate()
import spark.implicits._
case class A(id: Long, distance: Double)
val df = List(A(1, 5.0), A(1,3.0), A(1, 7.0), A(1, 4.0), A(2, 1.0), A(2, 3.0), A(2, 4.0), A(2, 7.0))
.toDF("id", "distance")
val window = Window.partitionBy("id").orderBy("distance")
val result = df.withColumn("rank", row_number().over(window)).where(col("rank") <= 2 )
result.drop("rank").show()