條件公式和自由文本位於同一列我正在創建一個數據表模板供其他人使用並提交給我。 在某些情況下,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 列運行列表檢查,因為它是獨立的,並且如果它超出了所需的範圍,也可以工作。無論如何,請檢查一下,如果您有任何疑問,請告訴我。