メインコンテンツへスキップ
 

別の列の一意の値に基づいて、ある列のセルを転置する方法は?

著者:シャオヤン 最終更新日:2024年10月12日

XNUMXつの列を含むデータの範囲があるとします。次に、ある列のセルを別の列の一意の値に基づいて水平行に転置して、次の結果を取得します。 Excelでこの問題を解決するための良いアイデアはありますか?

一意の値に基づいてセルを転置した後の望ましい結果を示すスクリーンショット

数式を使用した一意の値に基づいて、セルをXNUMXつの列に転置します

VBAコードを使用して一意の値に基づいてXNUMXつの列のセルを転置します

Kutools for Excelを使用して、一意の値に基づいてXNUMXつの列のセルを転置します。


数式を使用した一意の値に基づいて、セルをXNUMXつの列に転置します

次の配列数式を使用すると、一意の値を抽出し、対応するデータを水平方向の行に転置できます。次のようにしてください。

1。 次の配列数式を入力します。 = INDEX($ A $ 2:$ A $ 16、MATCH(0、COUNTIF($ D $ 1:$ D1、$ A $ 2:$ A $ 16)、0)) 空白のセル、たとえばD2に入れて、 Shift + Ctrl + Enter 正しい結果を得るために一緒にキーを押します。スクリーンショットを参照してください。

転置データから一意の値を抽出する数式を示すスクリーンショット

注意:上記の式では、 A2:A16 一意の値を一覧表示する列であり、および D1 この数式セルの上のセルです。

2。 次に、塗りつぶしハンドルをセルまでドラッグして、すべての一意の値を抽出します。スクリーンショットを参照してください。

数式を使用して抽出された一意の値を示すスクリーンショット

3。 次に、この数式をセルE2に入力します。 =IFERROR(INDEX($B$2:$B$16, MATCH(0, COUNTIF($D2:D2,$B$2:$B$16)+IF($A$2:$A$16<>$D2, 1, 0), 0)), 0)、を押すのを忘れないでください Shift + Ctrl + Enter 結果を取得するためのキー。スクリーンショットを参照してください。

一意の値に基づいて Excel のセルを転置する数式を示すスクリーンショット

注意:上記の式では: B2:B16 転置する列データです。 A2:A16 に基づいて値を転置する列であり、 D2 手順1で抽出した一意の値が含まれます。

4. 次に、0が表示されるまで、転置データを一覧表示するセルの右側に塗りつぶしハンドルをドラッグします。スクリーンショットを参照してください。

数式を使用してExcelで転置されたデータを示すスクリーンショット

5。 次に、次のスクリーンショットに示すように、塗りつぶしハンドルをセルの範囲までドラッグして、転置データを取得します。

一意の値に基づいてExcelで最終的に転置されたデータを示すスクリーンショット


VBAコードを使用して一意の値に基づいてXNUMXつの列のセルを転置します

数式が複雑で理解しにくい場合があります。ここでは、次のVBAコードを実行して、必要な結果を得ることができます。

1。 を押し続けます Alt + F11 キーを押して アプリケーション向け Microsoft Visual Basic 窓。

2に設定します。 OK をクリックします。 インセット > モジュール、次のコードをに貼り付けます モジュール 窓。

VBAコード:別の列の一意の値に基づいて、ある列のセルを転置します。

Sub transposeunique()
'updateby Extendoffice
    Dim xLRow As Long
    Dim i As Long
    Dim xCrit As String
    Dim xCol  As New Collection
    Dim xRg As Range
    Dim xOutRg As Range
    Dim xTxt As String
    Dim xCount As Long
    Dim xVRg As Range
    On Error Resume Next
    xTxt = ActiveWindow.RangeSelection.Address
    Set xRg = Application.InputBox("please select data range(only two columns):", "Kutools for Excel", xTxt, , , , , 8)
    Set xRg = Application.Intersect(xRg, xRg.Worksheet.UsedRange)
    If xRg Is Nothing Then Exit Sub
    If (xRg.Columns.Count <> 2) Or _
       (xRg.Areas.Count > 1) Then
        MsgBox "the used range is only one area with two columns ", , "Kutools for Excel"
        Exit Sub
    End If
    Set xOutRg = Application.InputBox("please select output range(specify one cell):", "Kutools for Excel", xTxt, , , , , 8)
    If xOutRg Is Nothing Then Exit Sub
    Set xOutRg = xOutRg.Range(1)
    xLRow = xRg.Rows.Count
    For i = 2 To xLRow
        xCol.Add xRg.Cells(i, 1).Value, xRg.Cells(i, 1).Value
    Next
    Application.ScreenUpdating = False
    For i = 1 To xCol.Count
        xCrit = xCol.Item(i)
        xOutRg.Offset(i, 0) = xCrit
        xRg.AutoFilter Field:=1, Criteria1:=xCrit
        Set xVRg = xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible)
        If xVRg.Count > xCount Then xCount = xVRg.Count
        xRg.Range("B2:B" & xLRow).SpecialCells(xlCellTypeVisible).Copy
        xOutRg.Offset(i, 1).PasteSpecial Paste:=xlPasteAll, Operation:=xlNone, SkipBlanks:=False, Transpose:=True
        Application.CutCopyMode = False
    Next
    xOutRg = xRg.Cells(1, 1)
    xOutRg.Offset(0, 1).Resize(1, xCount) = xRg.Cells(1, 2)
    xRg.Rows(1).Copy
    xOutRg.Resize(1, xCount + 1).PasteSpecial Paste:=xlPasteFormats
    xRg.AutoFilter
    Application.ScreenUpdating = True
End Sub

3. 次に、 F5 このコードを実行するためのキーを押すと、使用するデータ範囲を選択するように促すプロンプトボックスが表示されます。スクリーンショットを参照してください。

Excel で転置するデータ範囲を選択するためのプロンプト ボックスのスクリーンショット

4。 そして、 OK ボタンをクリックすると、別のプロンプトボックスが表示され、結果を表示するセルを選択するように促されます。スクリーンショットを参照してください。

Excel で転置されたデータの出力セルを選択するためのプロンプト ボックスのスクリーンショット

6に設定します。 OK をクリックします。 OK ボタンをクリックすると、列Bのデータが列Aの一意の値に基づいて転置されます。スクリーンショットを参照してください。

VBA コードを実行した後、Excel で転置されたデータを示すスクリーンショット


Kutools for Excelを使用して、一意の値に基づいてXNUMXつの列のセルを転置します。

あなたが持っている場合 Kutools for Excel高度な結合行分割セル ユーティリティを使用すると、数式やコードを使用せずにこのタスクをすばやく完了できます。

Kutools for Excel 複雑なタスクを効率化し、創造性と効率性を高める 300 を超える高度な機能を提供します。 AI機能で強化Kutools はタスクを正確に自動化し、データ管理を容易にします。 Kutools for Excel の詳細情報...         無料トライアル...

インストールした後 Kutools for Excel、次のようにしてください。

1。 使用するデータ範囲を選択します。 (元のデータを保持したい場合は、最初にデータをコピーして別の場所に貼り付けてください。)

2。 次に、をクリックします クツール > マージ&スプリット > 高度な結合行、スクリーンショットを参照してください:

リボンの Kutools タブにある高度な行結合オプションのスクリーンショット

3。 の中に 列に基づいて行を組み合わせる ダイアログボックスで、次の操作を行ってください。

(1.)データを転置する列名をクリックし、 主キー;

(2.)転置したい別の列をクリックし、をクリックします 組み合わせる 次に、XNUMXつの区切り文字を選択して、スペース、コンマ、セミコロンなどの結合されたデータを区切ります。

列に基づいて行を結合するダイアログボックスのスクリーンショット

4。 次に、をクリックします Ok ボタンをクリックすると、列Bのデータが列Aに基づいてXNUMXつのセルに結合されます。スクリーンショットを参照してください。

一意の値に基づいて行を結合した後、Kutools for Excel で結合されたデータを示すスクリーンショット

5。 次に、結合されたセルを選択して、 クツール > マージ&スプリット > 分割セル、スクリーンショットを参照してください:

リボンの Kutools タブにあるセルの分割オプションのスクリーンショット

6。 の中に 分割セル ダイアログボックスで 列に分割種類 オプションを選択し、結合されたデータを区切るセパレータを選択します。スクリーンショットを参照してください。

セルの分割ダイアログボックスのスクリーンショット

7。 次に、をクリックします Ok ボタンをクリックし、セルを選択して、分割結果をポップアウトされたダイアログボックスに配置します。スクリーンショットを参照してください。

出力セルを選択するためのダイアログボックスのスクリーンショット

8に設定します。 OK をクリックします。 OK、および必要に応じて結果が得られます。 スクリーンショットを参照してください:

転置されたデータの最終結果を示すスクリーンショット

今すぐExcel用のKutoolsをダウンロードして無料トライアル!


デモ:Kutools for Excelを使用して、一意の値に基づいてXNUMXつの列のセルを転置します

 
Kutools for Excel: 300 以上の便利なツールがあなたの指先で使えます! AI 機能を永久に無料でお楽しみください! 今すぐダウンロード!

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

🤖 Kutools AI アシスタント: 以下に基づいてデータ分析に革命をもたらします。 インテリジェントな実行   |  コードを生成  |  カスタム数式の作成  |  データを分析してグラフを生成する  |  Kutools関数を呼び出す...
人気の機能: 重複を検索、強調表示、または識別する   |  空白行を削除する   |  データを失わずに列またはセルを結合する   |   数式なしのラウンド ...
スーパールックアップ: 複数の基準の VLookup    複数の値の VLookup  |   複数のシートにわたる VLookup   |   ファジールックアップ ....
詳細ドロップダウン リスト: ドロップダウンリストを素早く作成する   |  依存関係のドロップダウン リスト   |  複数選択のドロップダウンリスト ....
列マネージャー: 特定の数の列を追加する  |  列の移動  |  Toggle 非表示列の表示ステータス  |  範囲と列の比較 ...
注目の機能: グリッドフォーカス   |  デザインビュー   |   ビッグフォーミュラバー    ワークブックとシートマネージャー   |  リソースライブラリ (自動テキスト)   |  日付ピッカー   |  ワークシートを組み合わせる   |  セルの暗号化/復号化    リストごとにメールを送信する   |  スーパーフィルター   |   特殊フィルター (太字/斜体/取り消し線をフィルター...) ...
上位 15 のツールセット12 テキスト ツール (テキストを追加, 文字を削除する、...)   |   50+ チャート 種類 (ガントチャート、...)   |   40+ 実用的 (誕生日に基づいて年齢を計算する、...)   |   19 挿入 ツール (QRコードを挿入, パスから画像を挿入、...)   |   12 変換 ツール (数字から言葉へ, 通貨の換算、...)   |   7 マージ&スプリット ツール (高度な結合行, 分割セル、...)   |   ... もっと

Kutools for Excel で Excel スキルを強化し、これまでにない効率を体験してください。 Kutools for Excelは、生産性を向上させ、時間を節約するための300以上の高度な機能を提供します。  最も必要な機能を入手するにはここをクリックしてください...


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

  • Word、Excel、PowerPointでタブ付きの編集と読み取りを有効にする、パブリッシャー、アクセス、Visioおよびプロジェクト。
  • 新しいウィンドウではなく、同じウィンドウの新しいタブで複数のドキュメントを開いて作成します。
  • 生産性を 50% 向上させ、毎日何百回もマウス クリックを減らすことができます!