You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

满足行条件时如何将y列右移1位并插入新值到y1列

实现方案

核心逻辑非常简单:先筛选符合条件的行,从右往左批量移动y列数据避免原值被覆盖,最后插入新值到y1列即可。以下给出两种常用场景的实现代码:

Python Pandas 实现(适合批量处理大量表格数据)

import pandas as pd
import numpy as np

# 示例数据构造,实际使用时可以替换为 pd.read_excel/ pd.read_csv读入你的本地表格
data = {
    'fname': ['A', 'C', 'E', 'G', 'I'],
    'lname': ['1B', '2D', '3F', '4H', '5J'],
    'y1': [5, 1, np.nan, 2, 7],
    'y2': [6, np.nan, np.nan, np.nan, np.nan],
    'y3': [4, np.nan, np.nan, np.nan, np.nan],
    'y4': [np.nan]*5,
    'y5': [np.nan]*5,
    'y6': [np.nan]*5
}
df = pd.DataFrame(data)

# 定义所有y类列的顺序列表
y_cols = [f'y{i}' for i in range(1, 7)]
# 生成奇数行筛选掩码:Pandas默认索引从0开始,0、2、4对应你需要处理的第1、3、5条数据行
mask = df.index % 2 == 0

# 批量将y1~y5的值右移到y2~y6
df.loc[mask, y_cols[1:]] = df.loc[mask, y_cols[:-1]].values
# 将fname转为小写写入y1列
df.loc[mask, 'y1'] = df.loc[mask, 'fname'].str.lower()

# 可选:将空值替换为空字符串,和你示例输出效果完全一致
df = df.fillna('')
print(df)

Excel VBA 实现(适合直接在Excel文件内操作)

Sub 右移Y列插入值()
    Dim ws As Worksheet
    Dim lastRow As Long, i As Long, j As Long
    ' 替换为你实际的工作表名,默认用当前激活的工作表
    Set ws = ActiveSheet
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 从第2行开始遍历(默认第1行是表头)
    For i = 2 To lastRow
        ' 判断是否为需要处理的奇数数据行:i=2对应第一条数据行
        If (i - 1) Mod 2 = 1 Then
            ' 从右往左倒序赋值,避免提前覆盖未取值的原数据
            For j = 8 To 3 Step -1
                ' 此处列号根据你实际表格调整:示例默认y1是第3列、y6是第8列
                ws.Cells(i, j).Value = ws.Cells(i, j - 1).Value
            Next j
            ' 将fname列(默认第1列)小写写入y1列
            ws.Cells(i, 3).Value = LCase(ws.Cells(i, 1).Value)
        End If
    Next i
End Sub

内容的提问来源于stack exchange,提问作者Anderlecht

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 02:36:03