Excel表格的操作求教,行内内容倒序显示

动作开发 · 1833 次浏览
Edward_zheng 创建于 3天20小时前



用列表操作不会搞,想着用列表的每一项,就是想提取最后一项[-1](网上查来的,就是会报错,用[0]就没问题),然后用追加内容的方式反过来形成一个新列表。就是不行,如下图。

 



所以只能逐行的处理。尴尬的是单元格内的内容也给我反转了,张三变成三张,51变成15。用的是文本处理的反转功能的方式

 

上下反转是实现了,但是还想搞个左右行内调转失败了。

求大佬指教,如果用列表形式怎么反转列表。如果用文本处理反转又怎么实现


涛涛涛 3天11小时前 :

建议用vba实现,

Excel表格vba

Sub 左右1()

    Dim sourceRange As Range

    Dim targetRange As Range

    Dim sourceData As Variant

    Dim reversedData() As Variant

    Dim i As Long, j As Long

    Dim rowCount As Long, colCount As Long

    

    Set sourceRange = Selection

    

    sourceData = sourceRange.Value

    

    rowCount = sourceRange.Rows.Count

    colCount = sourceRange.Columns.Count


    ReDim reversedData(1 To rowCount, 1 To colCount)

    

    ' 遍历每一行

    For i = 1 To rowCount

        ' 遍历每一列(从右向左)

        For j = 1 To colCount

            reversedData(i, j) = sourceData(i, colCount - j + 1)

        Next j

    Next i

    

    ' 将调换后的数据写回目标范围

    sourceRange.Value = reversedData

End Sub




Sub 上下1()

    Dim sourceRange As Range

    Dim targetRange As Range

    Dim sourceData As Variant

    Dim reversedData() As Variant

    Dim i As Long, j As Long

    Dim rowCount As Long, colCount As Long

    

    ' 设置源数据范围

    Set sourceRange = Selection

    

    sourceData = sourceRange.Value

    

    ' 获取源数据的行数和列数

    rowCount = sourceRange.Rows.Count

    colCount = sourceRange.Columns.Count

    

    ' 重新定义调换后的数组

    ReDim reversedData(1 To rowCount, 1 To colCount)

    

    ' 上下调换逻辑

    For i = 1 To rowCount

        ' 计算调换后的行号(例如:1 ? 4, 2 ? 3)

        Dim reversedRow As Long

        reversedRow = rowCount - i + 1

        

        For j = 1 To colCount

            reversedData(reversedRow, j) = sourceData(i, j)

        Next j

    Next i

    

    ' 将调换后的数据写回目标范围

    sourceRange.Resize(rowCount, colCount).Value = reversedData

End Sub


涛涛涛 最后更新于 3天11小时前
涛涛涛 3天11小时前 :

wps表格js宏:

function 左右()

{

Selection.Value2=Selection().map(a=>a.reverse())

}




function 上下()

{

var aa=Application.WorksheetFunction

Selection.Value2=aa.Transpose(aa.Transpose(Selection).map(a=>a.reverse()))

}



都是选择表格区域后,再运行,注意,它们是在原数据上转换的,原数据会跟着变的





涛涛涛 最后更新于 3天11小时前
涛涛涛 3天10小时前 :

还有就是如果你要列表倒置的话,可以用这个模块,它有倒置的方法


Edward_zheng 回复 涛涛涛 3天4小时前 :

谢谢大神回答,无法实现,倒置只能实现上下调转,无法左右调转。

Edward_zheng 回复 涛涛涛 3天4小时前 :

另外,因为我另一个动作要自行打开某个xlxs文件,一打开如果有vba宏在的话会自动弹出窗口,导致动作无法继续。所以我不想用vba来实现

涛涛涛 回复 Edward_zheng 3天4小时前 :

好的,那你可以把你想要的前后结果数据对比截图说一下,和你不成功的动作链接发一下,来试试看可以按你的思路解决不

Edward_zheng 回复 涛涛涛 3天4小时前 :

https://getquicker.net/Sharedaction?code=333e0b29-7d18-4a7f-dcba-08ddb696b54d

Edward_zheng 回复 涛涛涛 3天3小时前 :

原数据


想要的效果↓



动作效果,不是我想要的↓

涛涛涛 回复 Edward_zheng 3天3小时前 :

好的,晚上有时间看看试试

Edward_zheng 回复 涛涛涛 3天3小时前 :

万分感谢大大

涛涛涛 回复 Edward_zheng 3天2小时前 :
Edward_zheng 回复 涛涛涛 3天2小时前 :

嗯嗯,不止是延时问题,第一行莫名复制多一行。不过给我提供一个思路了,我再改改,感谢涛涛大神

涛涛涛 回复 Edward_zheng 1天4小时前 :

https://getquicker.net/Sharedaction?code=84973a83-c1cb-431e-7f2f-08ddb86173c7

这个可以一次性全部左右互转,不用逐行转,就不用加延时了


涛涛涛 最后更新于 1天4小时前
Edward_zheng 回复 涛涛涛 1天3小时前 :

厉害啊 我的哥。另不明原因,我这边还是要用上 获取选区那个子程序,不然没反应。之前你发的那个也是一样,不加那个子程序,运行会错乱。真不知什么原因,又没有用上其中的变量,我以为是quicker版本问题,但是更新了还是不行。搞不懂。可能我的电脑缺少运行环境。总之感谢您了。

涛涛涛 回复 Edward_zheng 1天2小时前 :

https://getquicker.net/Sharedaction?code=ea8fb5e9-b935-4141-7f32-08ddb86173c7

试试看这个可以解决那个没反应的问题不?

你说的那种情况,有可能出现,我记得在哪里也有看到你说的这种情况,所以才有了相关作者写个那个子程序,处理这种情况

但是我这里加了那个子程序就报错,哈哈

涛涛涛 最后更新于 1天2小时前
Edward_zheng 回复 涛涛涛 1天2小时前 :

还是不行,可能是我的系统问题,因为我之前想解决问题时问过ai,也是给过用代码解决的方案,但是都运行失败,我不知到是我没有用对还是什么原因。如果动作在你那里可以运行的话,可能是我这边的C++运行环境真有问题


涛涛涛 回复 Edward_zheng 1天2小时前 :

好的,应该就是系统的问题吧

Edward_zheng 回复 涛涛涛 1天2小时前 :

嗯嗯,还是感谢您热心帮助

回复内容
暂无回复
回复主贴