用列表操作不会搞,想着用列表的每一项,就是想提取最后一项[-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
原数据
想要的效果↓
动作效果,不是我想要的↓
好的,晚上有时间看看试试
万分感谢大大
建议用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
原数据
想要的效果↓
动作效果,不是我想要的↓
好的,晚上有时间看看试试
万分感谢大大