【问题标题】:Excel Create a IF statement that produces a value of 1 in Excel columnExcel 创建一个在 Excel 列中生成值 1 的 IF 语句
【发布时间】:2019-04-02 14:48:45
【问题描述】:

我正在尝试编写一个在 excel 中运行的脚本。我目前有一个 Excel 文件,其中一列中有超过 1,000 多个州首字母缩写,例如 NJ、MI、OH、TX。话虽如此,我还有 3 列代表区域 A、B 和 C。

如果状态初始是 NJ,我试图在特定的相应区域列中返回值 1。例如,如果状态初始值为 NJ,则在相应的列和行(区域 B)中返回 1。如果状态初始为 TX,则在相应的列和行(区域 A)中返回 1。如果州首字母是安大略,则在(C 区)返回值 1,依此类推。

有人知道我如何完成这项任务吗?使用 VBA、python,无论哪种语言都能做到最好。

另请参阅附图以获得更好的理解。下面的代码是我一次尝试一种状态的尝试。

Sub Region()
    If Range("A:A").Value = "NJ" Then
        Range("C:C").Value = 1
    End If   
End Sub

【问题讨论】:

  • 状态如何分配给区域?
  • 我选择将这些州分配给区域 A、B 或 C。新泽西州和俄亥俄州位于 B 区,密歇根州和德克萨斯州位于 A 区,安大略省位于 C 区。此外,每个州只能分配到一个地区。

标签: java python excel vba


【解决方案1】:

好吧,一次一个也行,但如果数据量很大,您可能会考虑下面的版本 2...

那么,试试这个:

=IF(A1="NJ",1,0)

在单元格 C1 中输入,然后向下拖动。

您可以考虑一个值表并在一个函数中处理所有状态:

=vlookup(A1,$G$1:$H$4,2,0)

版本 2 的图像:

您也可以将 index() 与 match() 一起使用:

=index($H$1:$H$4,match(A1,$G$1:$G$4,0))

【讨论】:

  • 感谢您的回复!因为我正在处理超过 10k + 状态/数据,对于拥有一个可以包含所有状态并在其受尊重的字段中输入 1 的脚本,您有什么建议?例如,如果“AL、AK、A​​R、CO、HI”为区域 A/E 列返回值 1,如果“CT、DE、FL、GA”为区域 B/F 列返回值 1,如果“安大略省阿尔伯塔省” , Quebec" 区域 C / 列 G 的返回值 1?
  • 那么 1000 还是 10000?您可以使用脚本应用相同的逻辑,甚至可以使用公式并在计算后粘贴特殊值,这将降低开销......
  • 在这里搜索一下,可能有类似的问题已经讨论过了,见stackoverflow.com/a/48217693/4961700
【解决方案2】:

如果 ActiveSheet.Cells(2, 2).Value = "Percentage" 和 ActiveSheet.Cells(LastRow - 1, 5).Value "Select" 那么 MsgBox "请将百分比类型选项重置为选择以红色突出显示的单元格" & Chr(13) ActiveSheet.Cells(LastRow - 1, 5).Interior.ColorIndex = 38 调用 ResetCustomDocProp 退出函数 ElseIf ActiveSheet.Cells(2, 2).Value = "Percentage" And ActiveSheet.Cells(LastRow - 1, 6).Value vbNullString Then MsgBox "请设置百分比单元格应为空白单元格以红色突出显示" & Chr(13) ActiveSheet.Cells(LastRow - 1, 6).Interior.ColorIndex = 38 调用 ResetCustomDocProp 退出函数 ElseIf ActiveSheet.Cells(2, 2).Value = "Percentage" And ActiveSheet.Cells(LastRow - 1, 5).Value = "Select" And InStr(ActiveSheet.Cells(LastRow - 1, 6).NumberFormat, "% ")

其他 如果 ActiveSheet.Cells(LastRow - 1, 4).Value vbNullString Then ActiveSheet.Cells(LastRow - 1, 4).Interior.ColorIndex = 20 万一 ActiveSheet.Cells(LastRow - 1, 5).Interior.ColorIndex = 20 ActiveSheet.Cells(LastRow - 1, 6).Interior.ColorIndex = 20 结束如果

【讨论】:

    猜你喜欢
    • 2011-07-13
    • 1970-01-01
    • 2017-06-28
    • 2019-02-18
    • 2013-08-19
    • 1970-01-01
    • 2018-01-23
    • 1970-01-01
    • 2018-05-25
    相关资源
    最近更新 更多