一次将两个单元格的值洗牌到一个新行
Shuffle values to a new row two cells at a time
用最简单的方式解释一下:
| 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 |
...需要看起来像:
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
| 7 | 8 |
我试过使用 TRANSPOSE()
函数,但在这种情况下它似乎不起作用。
我怎样才能完成这个简单的任务?
你把excel-vba放在你的标签里,所以我会post给你vba代码。我不知道如何用简单的单元格公式来做。希望它的可配置性足以满足您的需求,除了您给出的简单示例之外:
START_ROW = 1
START_COL = 1
STEP_COL = 2
OUTPUT_ROW = 3
OUTPUT_COL = 10
Row = START_ROW
Col = START_COL
Out_Row = OUTPUT_ROW
While Cells(Row, Col).Value <> ""
While Cells(Row, Col).Value <> ""
For step = 0 To STEP_COL - 1
Cells(Out_Row, OUTPUT_COL + step).Value = Cells(Row, Col + step).Value
Cells(Out_Row, OUTPUT_COL + step).Value = Cells(Row, Col + step).Value
Next step
Out_Row = Out_Row + 1
Col = Col + STEP_COL
Wend
Col = START_COL
Row = Row + 1
Wend
在右侧未使用的单元格中使用此公式,
=OFFSET($A, INT((ROW(1:1)-1)/2), COLUMN(A:A)-1+MOD((ROW(1:1)-1), 2)*2)
向右填写一栏并根据需要向下填写。您的结果应类似于以下内容。
用最简单的方式解释一下:
| 1 | 2 | 3 | 4 |
| 5 | 6 | 7 | 8 |
...需要看起来像:
| 1 | 2 |
| 3 | 4 |
| 5 | 6 |
| 7 | 8 |
我试过使用 TRANSPOSE()
函数,但在这种情况下它似乎不起作用。
我怎样才能完成这个简单的任务?
你把excel-vba放在你的标签里,所以我会post给你vba代码。我不知道如何用简单的单元格公式来做。希望它的可配置性足以满足您的需求,除了您给出的简单示例之外:
START_ROW = 1
START_COL = 1
STEP_COL = 2
OUTPUT_ROW = 3
OUTPUT_COL = 10
Row = START_ROW
Col = START_COL
Out_Row = OUTPUT_ROW
While Cells(Row, Col).Value <> ""
While Cells(Row, Col).Value <> ""
For step = 0 To STEP_COL - 1
Cells(Out_Row, OUTPUT_COL + step).Value = Cells(Row, Col + step).Value
Cells(Out_Row, OUTPUT_COL + step).Value = Cells(Row, Col + step).Value
Next step
Out_Row = Out_Row + 1
Col = Col + STEP_COL
Wend
Col = START_COL
Row = Row + 1
Wend
在右侧未使用的单元格中使用此公式,
=OFFSET($A, INT((ROW(1:1)-1)/2), COLUMN(A:A)-1+MOD((ROW(1:1)-1), 2)*2)
向右填写一栏并根据需要向下填写。您的结果应类似于以下内容。