Note: The other languages of the website are Google-translated. Back to English

Excelで複数の列をXNUMXつの列にすばやくスタックする方法は?

Excelでは、テキストから列への関数は区切り文字に基づいてセルを複数の列に分割できますが、以下のスクリーンショットに示すように、複数の列をXNUMXつの列にスタックする方法はありますか? この記事では、このタスクをすばやく解決するための秘訣をいくつか紹介します。
docスタック列を1つにXNUMX

式を使用して複数の列をXNUMXつにスタックします

VBAを使用して複数の列をXNUMXつにスタックします

変換範囲を使用して、複数の列をXNUMXつにスタックします 良いアイデア3


式を使用して複数の列をXNUMXつにスタックします

1.スタックする範囲を選択し、 名前ボックス この範囲に名前を付けるには、を押します 入力します キー。 スクリーンショットを参照してください:
docスタック列を2つにXNUMX

2.次に、結果を配置する空白のセルを選択し、この数式を入力します =INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1)、 押す エンテrキーを押し、エラーが表示されるまでフィルハンドルを下にドラッグします。 スクリーンショットを参照してください:
docスタック列を3つにXNUMX

式で、MyDataは、手順1で指定した範囲名です。

VBAを使用して複数の列をXNUMXつにスタックします

これもあなたを助けることができるVBAコードです。

1。 押す Altキー+ F11 表示するキー アプリケーション向け Microsoft Visual Basic 窓。

2。 クリック インセット > モジュール、以下のコードをに貼り付けます モジュール.

VBA:列をXNUMXつにスタックします

Sub ConvertRangeToColumn()
'UpdatebyExtendoffice
Dim Range1 As Range, Range2 As Range, Rng As Range
Dim rowIndex As Integer
xTitleId = "KutoolsforExcel"
Set Range1 = Application.Selection
Set Range1 = Application.InputBox("Source Ranges:", xTitleId, Range1.Address, Type:=8)
Set Range2 = Application.InputBox("Convert to (single cell):", xTitleId, Type:=8)
rowIndex = 0
Application.ScreenUpdating = False
For Each Rng In Range1.Rows
    Rng.Copy
    Range2.Offset(rowIndex, 0).PasteSpecial Paste:=xlPasteAll, Transpose:=True
    rowIndex = rowIndex + Rng.Columns.Count
Next
Application.CutCopyMode = False
Application.ScreenUpdating = True
End Sub

docスタック列を4つにXNUMX

3。 押す F5 キーを押してコードを実行すると、ダイアログが表示されてソースデータを選択し、[ OK、結果を配置するセルを選択します。 スクリーンショットを参照してください:
docスタック列を5つにXNUMX

4。 クリック OK。 これで、列がXNUMXつの列にスタックされました。
docスタック列を6つにXNUMX


変換範囲を使用して、複数の列をXNUMXつにスタックします

応募する Kutools for Excelさん 変換範囲 ユーティリティは、この問題をすばやく解決するのにも役立ちます。

Kutools for Excel, 以上で 300 便利な機能は、あなたの仕事をより簡単にします。 

後の 無料インストール Kutools for Excel、以下のようにしてください:

1.使用する列データを選択し、をクリックします クツール > レンジ > 変換範囲。 スクリーンショットを参照してください:
docスタック列を8つにXNUMX

2。 の中に 変換範囲 ダイアログ、チェック 単一列までの範囲 オプションをクリックして Ok、次にセルを選択して結果を配置します。 スクリーンショットを参照してください:
docスタック列を9つにXNUMX

3。 クリック OK。 これで、列がXNUMXつの単一の列にスタックされました。
docスタック列を1つにXNUMX


最高のオフィス生産性ツール

Kutools for Excelはほとんどの問題を解決し、生産性を80%向上させます

  • 再利用: すばやく挿入 複雑な数式、チャート および以前に使用したものすべて。 セルを暗号化する パスワード付き。 メーリングリストを作成する そしてメールを送る...
  • スーパーフォーミュラバー (複数行のテキストと数式を簡単に編集できます); 読書レイアウト (多数のセルを簡単に読み取って編集する); フィルター範囲に貼り付け...
  • セル/行/列をマージする データを失うことなく; 分割セルコンテンツ; 重複する行/列を組み合わせる...重複セルを防止します。 範囲を比較する...
  • [複製]または[一意]を選択します 行; 空白行を選択 (すべてのセルは空です); スーパーファインドとファジーファインド 多くのワークブックで; ランダム選択...
  • 正確なコピー 数式参照を変更せずに複数のセル。 参照の自動作成 複数のシートに; 箇条書きを挿入、チェックボックスなど...
  • テキストを抽出、テキストの追加、位置による削除、 スペースを削除する; ページング小計の作成と印刷。 セルの内容とコメントを変換する...
  • スーパーフィルター (フィルタースキームを保存して他のシートに適用します); 高度な並べ替え 月/週/日、頻度など。 特殊フィルター 太字、斜体...
  • ワークブックとワークシートを組み合わせる; キー列に基づいてテーブルをマージします。 データを複数のシートに分割; xls、xlsx、PDFをバッチ変換...
  • 300 以上の強力な機能. Office / Excel 2007-2021 および 365 をサポートします。すべての言語をサポートします。 企業や組織に簡単に導入できます。 フル機能の 30 日間無料トライアル。 60日間の返金保証。
kteタブ201905

Officeタブは、タブ付きのインターフェイスをOfficeにもたらし、作​​業をはるかに簡単にします

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!
officetab下部
コメントを並べ替える
コメント (25)
まだ評価はありません。 最初に評価してください!
このコメントは、サイトのモデレーターによって最小化されました
複数の行をXNUMXつの列に積み重ねているのであって、複数の列ではありません...私が探していたものではありません。
このコメントは、サイトのモデレーターによって最小化されました
6行のブロックにある列APをスタックするには、この数式をセルR1に入力し、入力します

=OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1)
このコメントは、サイトのモデレーターによって最小化されました
これは完璧に機能します、ありがとう
このコメントは、サイトのモデレーターによって最小化されました
このソリューションを投稿していただきありがとうございます。 各ブロックの前後にスペースが必要な場合は、行にカウントを追加するだけなので、上記の例では、$ A$6の代わりに$A$7と記述します。 行にゼロの「0」を入力しますが、Sublimeの「Findの選択を使用」で簡単に編集できます。 ゼロを追加しない解決策を知っている場合は、投稿してください!?
このコメントは、サイトのモデレーターによって最小化されました
0の代わりに空白のセルを出力するには、IF関数> 0、TRUE->元のセルの内容を出力、FALSE->出力""を実行します。

=if(OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1)>0,OFFSET($A$1,MOD(ROW()-ROW($R$1),ROWS($A$1:$A$6)),TRUNC((ROW()-ROW($R$1))/ROWS($A$1:$A$6)),1,1),"")
このコメントは、サイトのモデレーターによって最小化されました
ダン、今は動作しません! 新しいタブで試しましたが、元の行のコンテンツではなく、列のコンテンツをXNUMXつにスタックするようになりました。
このコメントは、サイトのモデレーターによって最小化されました
最後のXNUMXつをキャンセルし、切り捨てステップを逃しました。
このコメントは、サイトのモデレーターによって最小化されました
かなり前にこの質問に答えたと思いますが、この関数の各部分が正確に何をしているのか説明していただけますか?
このコメントは、サイトのモデレーターによって最小化されました
たぶん、このチュートリアルはあなたを助けることができます。https://www。extendoffice.com / document / excel / 3327-excel-convert-multiple-rows-to-columns.html
このコメントは、サイトのモデレーターによって最小化されました
これは、有料ソフトウェアをダウンロードするためのクリックベイトです。
このコメントは、サイトのモデレーターによって最小化されました
最初のダウンロードは60日以内に無料で使用できます。その後、使用料を支払うかどうかを決定できます。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、上記のデータを次の形式に変換するものはありますか?
1
A
リリー
2
B
ジュディ
...
このコメントは、サイトのモデレーターによって最小化されました
メッセージを残してくれてありがとう、このチュートリアル https://www.extendoffice.com/documents/excel/5401-excel-stack-columns-into-one-column.html
この問題を解決する方法について話している、あなたはビューに行くことができます。
このコメントは、サイトのモデレーターによって最小化されました
同じ行で終わるデータがありますが、複数の列を積み重ねて、B列のデータがA列のデータの下に配置され、C列のデータがA列のデータの下に配置されるようにします。ここで、B列のデータが終了します。 このようにして、XNUMXつの列に収まるように複数の列からのデータを取得します。 どうやってやるの?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、データに含まれる可能性のある空白のセルを数式で無視する方法はありますか?


=INDEX(MyData,1+INT((ROW(A1)-1)/COLUMNS(MyData)),MOD(ROW(A1)-1+COLUMNS(MyData),COLUMNS(MyData))+1),


ヘルパーシートを使用して、データ検証ドロップダウンリストの連続したリストを作成しています。 前もって感謝します。
このコメントは、サイトのモデレーターによって最小化されました
申し訳ありませんが、数式が苦手です。Kutoolsfor Excelの非空白セルの選択ユーティリティを使用して、最初に空でないセルを選択し、それらをコピーして別の場所に貼り付けてから、上記の方法を使用してみてください。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、私はこれでさらに一歩進んでいきたいと思っています。 複数の列をXNUMXつにスタックするVBA、コードを使用しましたが、これは機能します。 このコードのソースとしてテーブルを使用し、リストを取得しました。 マクロの実行を自動化する方法はありますか? テーブルに新しいエントリを追加すると、マクロが自動的に実行され、結果のリストが最新の状態に保たれますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、Chris Blackburn、申し訳ありませんが、結果を更新するためにコードを自動的に実行できるコードが見つからないので、他の誰かが実行できる可能性があります。
このコメントは、サイトのモデレーターによって最小化されました
私は非常に大きなテーブル(すべて数式にリンクされている数百の列と行。私のExcelはロードを続け、最終的には応答しなくなります。これを乗り越える方法はありますか?)でこれを実行しようとしています。
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、トム、あなたが適用する方法はどれがうまくいきませんか? 方法XNUMX、範囲変換ツールが機能する必要があります。
このコメントは、サイトのモデレーターによって最小化されました
数式を使用して複数の列を1つにスタックする方法を使用しており、完全に機能しましたが、書式を維持したいのです。つまり、一部の列は太字で、XNUMXつはハイパーリンクでした。 これを実現するために数式に追加できるものはありますか?
このコメントは、サイトのモデレーターによって最小化されました
こんにちは、スーザンミラード、彼らの公式はあなたのニーズを満たすことができます、あなたはVBAまたは転置範囲ツールを使うことができます、それらの両方があなたを満足させることができます。
このコメントは、サイトのモデレーターによって最小化されました
どうもありがとうございました、数式オプションは非常にうまくいきました..あなたは私の多くの時間を節約しました。
このコメントは、サイトのモデレーターによって最小化されました
公式とVBAに感謝しますが、どちらも投稿のタイトルが言うことをしません。 私は彼らが列をスタックすることを期待していましたが、代わりに各行を列に転置してそれらをスタックします...したがって、列ではなく転置された行をスタックします。 場合によってはまだ非常に役立ちますが、実際に列をスタックするように数式やVBAを変更する方法を知っている人はいますか? 入力範囲全体を転置して、これらを使用できると思います...
このコメントは、サイトのモデレーターによって最小化されました
列を3つにスタックし、行を3つにスタックしない場合は、実際に何をしたいのかを明確に把握する必要があります.1,1x2,1配列がある場合、index()関数で次の形式のエントリを取得する必要があります。 (行、列)for(3,1)、(1,2)、(2,2)、次に(3,2)、(1)、(2)など。実行するのは、index()がすべての行番号(3; 1; 2; 3; 1; 2; 3; 1; 1)を含む単一の列とすべての列番号(1; 2)を含む単一の列を参照するようにすることです。 ; 2; 2; 3; 3; 3; 1; 2)。(3; 1; 2; 3; 1; 2; 3; 1; 1,3)を取得するには、一般的なプログラミングアプローチは0,1,2,0,1,2 + mod(some_counter -XNUMX)ここで、mod()関数は残差XNUMX、..を与えます。
(1; 1; 1; 2; 2; 2; 3; 3; 3)を取得するには、1 + int((some_counter-1)/ 3)を使用します。ここで1 + 0、1 + 0、1+0が得られます。 、1 + 1、1 + 1、1 + 1、1 + 2、1 + 2、1 + 2
したがって、3x3配列を1つにスタックするには、次の式を使用します(Ctrl + Shft + Enterを押します):= index($ A $ 3:$ C $ 1、1 + mod(row(A1,3)-1)、1 + int((row(A1)-3)/ 1)))ここで、row(AXNUMX)は、数式を下向きに入力するときのカウンターとして機能します
逆にすると(行から列、列から行)、行が1つの列にスタックされます= INDEX($ A $ 3:$ C $ 1、1 + INT((ROW(A1)-3)/ 1)、1 + MOD(ROW(A1,3)-XNUMX))これは基本的にこの記事の式が行うことです

簡単に言うと、配列内の列を1つの列にスタックするために使用される式は次のようになります。= index(your_array_cells、1 + mod(row(A1)-1、number_of_rows_of_your_array)、1 + int((row(A1)-XNUMX )/ number_of_columns_of_your_array)))
ここにはまだコメントが投稿されていません
あなたのコメントを残す
ゲストとして投稿
×
この投稿を評価:
0   文字
推奨される場所

フォローする

著作権©の2009 - WWW。extendoffice.com。 | | 全著作権所有。 搭載 ExtendOffice。 | サイトマップ
MicrosoftおよびOfficeのロゴは、米国MicrosoftCorporationの米国およびその他の国における商標または登録商標です。
SectigoSSLで保護