用列表操作不会搞,想着用列表的每一项,就是想提取最后一项[-1](网上查来的,就是会报错,用[0]就没问题),然后用追加内容的方式反过来形成一个新列表。就是不行,如下图。
所以只能逐行的处理。尴尬的是单元格内的内容也给我反转了,张三变成三张,51变成15。用的是文本处理的反转功能的方式
上下反转是实现了,但是还想搞个左右行内调转失败了。求大佬指教,如果用列表形式怎么反转列表。如果用文本处理反转又怎么实现
建议用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()
' 设置源数据范围
' 获取源数据的行数和列数
' 重新定义调换后的数组
' 上下调换逻辑
' 计算调换后的行号(例如:1 ? 4, 2 ? 3)
Dim reversedRow As Long
reversedRow = rowCount - i + 1
reversedData(reversedRow, j) = sourceData(i, j)
sourceRange.Resize(rowCount, colCount).Value = reversedData
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()))
都是选择表格区域后,再运行,注意,它们是在原数据上转换的,原数据会跟着变的
还有就是如果你要列表倒置的话,可以用这个模块,它有倒置的方法
谢谢大神回答,无法实现,倒置只能实现上下调转,无法左右调转。
另外,因为我另一个动作要自行打开某个xlxs文件,一打开如果有vba宏在的话会自动弹出窗口,导致动作无法继续。所以我不想用vba来实现
好的,那你可以把你想要的前后结果数据对比截图说一下,和你不成功的动作链接发一下,来试试看可以按你的思路解决不
https://getquicker.net/Sharedaction?code=333e0b29-7d18-4a7f-dcba-08ddb696b54d
原数据
想要的效果↓
动作效果,不是我想要的↓
好的,晚上有时间看看试试
万分感谢大大
https://getquicker.net/Sharedaction?code=30ed801f-1cfa-4684-dcbf-08ddb696b54d如果有数据错乱,就加点延时
嗯嗯,不止是延时问题,第一行莫名复制多一行。不过给我提供一个思路了,我再改改,感谢涛涛大神
https://getquicker.net/Sharedaction?code=84973a83-c1cb-431e-7f2f-08ddb86173c7
这个可以一次性全部左右互转,不用逐行转,就不用加延时了
厉害啊 我的哥。另不明原因,我这边还是要用上 获取选区那个子程序,不然没反应。之前你发的那个也是一样,不加那个子程序,运行会错乱。真不知什么原因,又没有用上其中的变量,我以为是quicker版本问题,但是更新了还是不行。搞不懂。可能我的电脑缺少运行环境。总之感谢您了。
https://getquicker.net/Sharedaction?code=ea8fb5e9-b935-4141-7f32-08ddb86173c7
试试看这个可以解决那个没反应的问题不?
你说的那种情况,有可能出现,我记得在哪里也有看到你说的这种情况,所以才有了相关作者写个那个子程序,处理这种情况
但是我这里加了那个子程序就报错,哈哈
还是不行,可能是我的系统问题,因为我之前想解决问题时问过ai,也是给过用代码解决的方案,但是都运行失败,我不知到是我没有用对还是什么原因。如果动作在你那里可以运行的话,可能是我这边的C++运行环境真有问题
好的,应该就是系统的问题吧
嗯嗯,还是感谢您热心帮助
建议用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
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()))
}
都是选择表格区域后,再运行,注意,它们是在原数据上转换的,原数据会跟着变的
还有就是如果你要列表倒置的话,可以用这个模块,它有倒置的方法
谢谢大神回答,无法实现,倒置只能实现上下调转,无法左右调转。
另外,因为我另一个动作要自行打开某个xlxs文件,一打开如果有vba宏在的话会自动弹出窗口,导致动作无法继续。所以我不想用vba来实现
好的,那你可以把你想要的前后结果数据对比截图说一下,和你不成功的动作链接发一下,来试试看可以按你的思路解决不
https://getquicker.net/Sharedaction?code=333e0b29-7d18-4a7f-dcba-08ddb696b54d
原数据
想要的效果↓
动作效果,不是我想要的↓
好的,晚上有时间看看试试
万分感谢大大
https://getquicker.net/Sharedaction?code=30ed801f-1cfa-4684-dcbf-08ddb696b54d

如果有数据错乱,就加点延时
嗯嗯,不止是延时问题,第一行莫名复制多一行。不过给我提供一个思路了,我再改改,感谢涛涛大神
https://getquicker.net/Sharedaction?code=84973a83-c1cb-431e-7f2f-08ddb86173c7
这个可以一次性全部左右互转,不用逐行转,就不用加延时了
厉害啊 我的哥。另不明原因,我这边还是要用上 获取选区那个子程序,不然没反应。之前你发的那个也是一样,不加那个子程序,运行会错乱。真不知什么原因,又没有用上其中的变量,我以为是quicker版本问题,但是更新了还是不行。搞不懂。可能我的电脑缺少运行环境。总之感谢您了。
https://getquicker.net/Sharedaction?code=ea8fb5e9-b935-4141-7f32-08ddb86173c7
试试看这个可以解决那个没反应的问题不?
你说的那种情况,有可能出现,我记得在哪里也有看到你说的这种情况,所以才有了相关作者写个那个子程序,处理这种情况
但是我这里加了那个子程序就报错,哈哈
还是不行,可能是我的系统问题,因为我之前想解决问题时问过ai,也是给过用代码解决的方案,但是都运行失败,我不知到是我没有用对还是什么原因。如果动作在你那里可以运行的话,可能是我这边的C++运行环境真有问题

好的,应该就是系统的问题吧
嗯嗯,还是感谢您热心帮助