從一列中取得字元之間的行,然後將其他列值(僅選定的行)移至其他列你好,
我想將選定行的多個列值移動或複製並貼上到同一張表中的其他列,如下圖所示
感興趣的行總是從 :Item == “start” 開始直到 :Item == “values”,但總行數可能不同。我想將感興趣的行的 Col1 和 Col2 中的值複製貼上或移動到 Col 3 和 Col 4。我目前的想法是手動建立一個列表,其中包含從開始到 :Item 下的值的字串,然後建立一個列,如果 :Item 包含列表,則將其標記為「1」。從那裡設定 Col 3 == Col 1 和 Col 4 = Col 2。
但是,開始和值之間的行可以不同。我想知道是否有人知道更好的方法來完成任務,而不需要手動建立列表,而是基於“開始”和“值”來查找行。
原始表

搬走後

自動化和腳本回覆:從一列中取得字元之間的行,然後將其他列值(僅選定的行)移至其他列我認為手動進行剪切和貼上會比創建開始和停止清單更容易。
回覆:從一列中取得字元之間的行,然後將其他列值(僅選定的行)移至其他列但目的是實現日常自動化,開始和值之間的行可能隨時會發生變化。
回覆:從一列中取得字元之間的行,然後將其他列值(僅選定的行)移至其他列然後我會讓它盡可能簡單,並建立一個配置表,例如

這使得你的 JSL 非常簡單,例如:
Names Default To Here( 1 );
dt = Current Data Table();
dtConfig = Data Table( "Config" );
For( i = 1, i <= N Rows( dtConfig ), i++,
frCol = dtConfig:From Column[i];
toCol = dtConfig:To Column[i];
For( k = dtConfig:Start Row[i], k <= dtConfig:End Row[i], k++,
Column( dt:toCol )[k] = Column( dt, FromCol )[k];
If( dtConfig:Move_Copy == "Move",
Column( dt, FromCol ) = ""
);
);
);
回覆:從一列中取得字元之間的行,然後將其他列值(僅選定的行)移至其他列我認為您可以在沒有配置表的情況下安全地完成此操作。在覆蓋任何內容之前,將檢查以確保 Col 1 在「開始」行中包含一個值。是的,我喜歡使用 For Each()。
Names Default To Here( 1 );
starts = Loc( dt:Item << Get Values, "start" );
ends = Loc( dt:Item << Get Values, "values" );
For Each( {v, i}, starts,
If( :Col 1[v] != "",
For Each( {val, idx}, v :: ends[i],
:Col 3[val] = :Col 1[val];
:Col 4[val] = :Col 2[val];
:Col 1[val] = "";
:Col 2[val] = "";
)
)
);