条件公式和自由文本位于同一列我正在创建一个数据表模板供其他人使用并提交给我。 在某些情况下,ColB 中的数据是 ColA 的函数,但在某些情况下情况并非如此。 我希望在输入 ColA 后自动填充 ColB(使用公式),让提交者的生活更轻松,但如果他们的 ColA 条目不符合预定义的关系,仍然允许他们在 ColB 中输入自定义字符串。 有办法实现这一点吗? 我天真地希望在 if 语句中将“else”条件留空可以实现这一点,但我错了。
奖励:如果我可以在所有这些功能之上使用列表检查(因为 ColB 仍然只有一组可接受值),那就更好了,但 JMP 已经抛出错误,告诉我无法添加列表检查顶部的公式(考虑到公式和自由文本不能共存,我认为这是有意义的)。
我有一种预感,我试图用一个简单的表格做太多事情,并且可能需要一个更高级的输入表单来完成所有这一切。 但只是想在走这条路之前检查一下。 提前致谢。
回复:同一列中的条件公式和自由文本啊,我明白了! 将“颜色”公式放入“材料 2”列中,但将其应用于具有列表检查的“材料(如果需要)”列。 好多了! 我试图将公式放入“材料(如果需要)”列中。 好东西!
回复:同一列中的条件公式和自由文本是的,您可以为另一列的单元格着色。 公式有点复杂,您必须在需要时添加颜色,并在不需要时将其删除(如果之前添加了)。
Match( :Furniture Type,
"Bed",
If( Is Missing( :"Material (if needed)"n ),
:"Material (if needed)"n << color cells( "Red", {Row()} );
"PLEASE ADD VALUE IN MATERIAL COLUMN";
,
:"Material (if needed)"n << color cells( "Black", {Row()} );
:"Material (if needed)"n;
),
"Chair", "Wood",
"Sofa",
If( Is Missing( :"Material (if needed)"n ),
:"Material (if needed)"n << color cells( "Red", {Row()} );
"PLEASE ADD VALUE IN MATERIAL COLUMN";
,
:"Material (if needed)"n << color cells( "Black", {Row()} );
:"Material (if needed)"n;
),
"Table", "Metal"
)回复:同一列中的条件公式和自由文本谢谢, @彼得_赫什! 抱歉,我很难很好地解释它。 我认为杰夫的提议应该可行。 我非常感谢您的意见!
回复:同一列中的条件公式和自由文本谢谢, @杰夫·珀金森! 我认为这是一个不错的实现,因为当用户从左到右填写给定行的内容时,说明将自动填充。 我应该考虑将指令构建到公式中。
如果可以根据“材料 2”列中的值自动为“材料(如果需要)”列中的单元格着色,我会洗耳恭听。 我尝试用公式来实现这一点,但后来我无法在“材料(如果需要)”列中保留列表检查。 这样我就可以对需要填写的单元格使用颜色指示器,并从输入器中完全隐藏“材料 2”列(因为他们不需要看到“材料 2”输出)。
回复:同一列中的条件公式和自由文本谢谢, @唐麦考马克! 是的,行状态一直在我要学习的东西清单上。 感谢您向我指出他们。 我会调查一下。
回复:同一列中的条件公式和自由文本@马特_匡威,我认为处理此问题的方法是让用户填写两列,一列用于(使用上面的示例)家具类型,另一列用于材料,然后您的公式列将使用您查找的那些您知道的家具类型,以及您不知道的材料列。
在公式中,您可以检查“材料”(如果需要)列是否已填充,并提醒用户需要填充。 您还可以在“材料”列上使用“列表检查”属性。

回复:同一列中的条件公式和自由文本嗨马特,
快速通话可能是有意义的。 我可能不完全理解您想要实现的目标。请随时与我联系彼得·赫什@jmp.com
您可以轻松创建一个脚本来一次性创建所有这些列与列的关系。除非有某种原因必须这样做。
回复:同一列中的条件公式和自由文本@马特_匡威您可以考虑将行状态处理程序与检查和更新感兴趣的列的函数结合使用。 这会有点棘手,因为行状态处理程序会在行状态发生更改时执行,并传递选定行和未选定行的行号。 您可能必须添加条件以确保该函数仅在某些情况下运行(例如,如果目标列中的值发生更改)。 这样做的好处是您无需使用函数或值来检查目标列。 查看脚本索引和文档中的示例。
回复:同一列中的条件公式和自由文本谢谢, @彼得_赫什! 我没有考虑过使用重新编码。 我设想了一些挑战,因为我的数据集(和“客户”工作流程)比我提到的更复杂:
1. 在添加第二行之前输入整行数据。 因此,需要为每一行运行该脚本(尽管是一个简单的播放按钮),并且我需要添加一些行以使其不会覆盖以前输入的非问号文本(我认为这是可行的)。
2. 我想利用此功能的多个列与列关系(即 ColA 和 ColB 之间以及 ColC 和 ColF 之间等),因此用户需要多次运行脚本给定行的时间以及已知何时播放脚本等,这看起来有点笨拙。 或者,我可以重新排列列(ColA、ColC、ColB 等)或要求用户从 ColA 跳转到 ColC 等,以便脚本每行只运行一次,但这些选项听起来也不太用户友好。
如果您认为“重新编码”是我最好的解决方法,我可能会尝试一下。 感谢您的输入!
回复:同一列中的条件公式和自由文本@马特_匡威您尝试过使用重新编码吗?在你的例子中,椅子是木头的,床是空白的。您可以运行一个快速脚本来运行此重新编码,然后添加列表检查属性。列表检查将允许用户右键单击并选择列表中的值之一。如果您使用 JMP 16 中的日志,它将捕获所有这些更改,因此您无需编写脚本。试试下面这个。
//Make Data Table
New Table( "Example 2",
Add Rows( 7 ),
New Column( "Furniture",
Character,
"Nominal",
Set Values( {"Chair", "Bed", "Chair", "Bed", "Stool", "Stool", "Bed"} )
)
);
Wait (2);
// Recode column: Material
dt = Data Table( "Example 2" );
dt << Begin Data Update;
col1 = dt << New Column( dt:Furniture );
col1 << Set Name( "Material" );
dt << Move Selected Columns( {col1}, after( dt:Furniture ) );
dt << Recode Column(
dt:Furniture,
{Map Value(
_rcOrig,
{"Bed", "?", "Chair", "Wood", "Stool", "Metal"},
Unmatched( _rcNow )
)},
Update Properties( 1 ),
Target Column( col1 )
);
dt << End Data Update;
// Clear row selection
Data Table( "Example 2" ) << Clear Select;
// Change column list check: Material
Data Table( "Example 2" ):Material << List Check( {"?", "Metal", "Wood"} );
回复:同一列中的条件公式和自由文本感谢您的及时回复,彼得。 通过查看它,我对价值标签有了更多的了解。 然而,除非我遗漏了什么,否则 ColB 最终仍然是 ColA 的函数。 在 ColB 与 ColA 具有一对多关系的情况下,我需要选择 ColB 独立于 ColA。
例如,假设 ColA 是“家具类型”,ColB 是“家具由什么材料制成?”。 如果用户在 ColA 中输入“椅子”,那么 ColB 会自动填充“木材”,因为我先验地知道他们唯一拥有的椅子是木头制成的。 但是,如果他们在 ColB 中输入“床”,则 ColB 会留空,以便他们填写“木材”或“金属”,因为他们可能有任何一种类型。 或者,如果他们将“Chair”放入 ColA 中,ColB 可能会变灰(因为我已经知道 ColB 应该是什么,我只是想节省他们的时间并避免拼写错误),但我也无法让它发挥作用,因为我还用公式执行了该操作。
希望这更清楚一点。 谢谢!
回复:同一列中的条件公式和自由文本@马特_匡威, 好问题。这是与您所问的类似的示例。我使用了值标签,您可以在其中包含一个范围。如果该值落在特定范围内,它将显示为标签。这可能会实现您所希望的或至少部分实现。您可以对 A 列运行列表检查,因为它是独立的,并且如果它超出了所需的范围,也可以工作。无论如何,请检查一下,如果您有任何疑问,请告诉我。