同じような質問かも知れませんが、応用ができず、なかなか解決しないので、教えてください。
エクセルについて条件と一致するデータがある場合、指定したセルの表示を別シートに返したい場合
例
表1:
A B C D E F D G
ばなな 2 4 6 8 10 12 13
りんご 3 8 12 15 20 25 30
すもも 3 9 10 12 20 21
の時
表2
A B C D E F D G
1 2 4 6 8 15 20 21
ばなな ばなな ばなな ばなな りんご りんご すもも
りんご すもも
のように列1の数値に一致する数値が表1のB~Gまでにある場合、Aの数値を表2に表示させたい場合
どのような関数を使えばよいでしょうか?関数以外でも解決できる方法があれば教えて下さい。
No.4
- 回答日時:
こんばんは。
こういう展開作業のことを、なんとかって言ったような気がします。
純粋なマクロでとも考えたのですが、なかなか面倒になってしまうので、一部関数混じりです。
フォームコントロールにて、標準モジュールに貼り付けお使いください。
なお、範囲などの登録やシートの登録というところは、Sheet2 でしたら、そのままでよいです。
一応、マクロのコード上には、注意点など書かれていますので、ざっと目を通してください。
'//
Sub NumbersSort()
Dim i As Long, j As Long, k As Long
Dim Ar(), Arbuf As Variant
Dim buf As String
Dim Rng As Range
Dim c As Range
Dim myDic As Object
Set myDic = CreateObject("Scripting.Dictionary")
Dim Ws2 As Worksheet
Set Ws2 = Worksheets("Sheet2") 'シートの登録
Set Rng = ActiveSheet.Range("A1").CurrentRegion '範囲の自動取得
'Set Rng = Range("B1:H3") '範囲の登録 (上か下かどちらか一方)
'注意:シート2の関連消去
Ws2.Range("A1").CurrentRegion.ClearContents
j = Rng.Count
If j = 0 Then Exit Sub
'------データの取得----------
For Each c In Rng 'データの範囲
If IsNumeric(c.Value) Then
If myDic.Exists(c.Value) Then
buf = myDic.Item(c.Value)
myDic.Item(c.Value) = buf & "," & Rows(c.Row).Cells(1).Value
Else
myDic.Add c.Value, Rows(c.Row).Cells(1).Value
k = k + 1
ReDim Preserve Ar(k)
Ar(k) = c.Value
End If
buf = ""
End If
Next
'-----ナンバリング---------
For i = 1 To k
Ws2.Cells(1, i).Value = Application.Small(Ar, i)
Next i
'--------出力------------
For i = 1 To Ws2.Cells(1, Columns.Count).End(xlToLeft).Column
buf = myDic.Item(Ws2.Cells(1, i).Value)
If buf <> "" Then
Arbuf = Application.Transpose(Split(buf, ","))
j = UBound(Arbuf)
Ws2.Cells(2, i).Resize(j).Value = Arbuf
End If
Next i
End Sub
'//
No.3ベストアンサー
- 回答日時:
添付図参照
Sheet1 において、
1.範囲 A1:H3 を選択
2.[挿入]→[名前]→[作成]を実行
3.“左端列”のみにチェック入れ
4.[OK]をパシーッ
Sheet2 において、
5.セル A2 に次式を入力して、此れを右および下方にズズーッとドラッグ&ペースト
=IF(MATCH(A$1,INDIRECT(Sheet1!$A1),0),Sheet1!$A1)
6.列A~H全体を選択
7.[編集]→[ジャンプ]→[セル選択]を実行
8.“数式”に目玉を入れ、かつ、その配下の“エラー値”のみにチェック入れ
9.[OK]をパシーッ(→その結果を添付図 Sheet2 の上段に示した)
10.[編集]→[削除]を実行
11.“上方向にシフト”に目玉入れ
12.[OK]をパシーッ(→その結果を添付図 Sheet2 の下段に示した)
初心者の為、説明が分かりにくかったのに、教えていただいてありがとうございました。皆さんとてもすばらしい回答いただきましたが、一番早くに解決していただいたので、こちらの方をベストアンサーにさせていただきます。
No.2
- 回答日時:
それから…
表1、2 の上端の記号が「A B C D E F G H」でなく、「A B C D E F D G」となっている(F とG の間に再び D が登場!)のはなぜ?
コレって列記号ではないの~?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 【エクセル】COUNTIFの検索条件が可変する数字の場合の数式 1 2022/09/27 15:34
- Excel(エクセル) Excelで、別シートの表のステータスに伴った動的な自動転記をしたいです。 2 2023/06/14 15:56
- Excel(エクセル) 条件に合った数値の合計を表示させたい関数と条件指定の方法 3 2023/05/13 16:07
- Excel(エクセル) エクセルで指定範囲にある名前と重複した場合に入力できないようにしたい 1 2023/07/13 09:58
- Excel(エクセル) IF 関数で「〇〇 という文字を含む場合」の分岐処理で表示された数字はSUMで数字集計できますか? 3 2022/08/02 16:29
- Excel(エクセル) 表計算ソフトcalcにおいて、1時間10分を1.1と表記する方法とそれらを集計する方法は? 4 2022/04/06 16:54
- Excel(エクセル) エクセル VBA セルの結合 2 2022/09/07 11:48
- Excel(エクセル) 指定した条件でTRANSPOSE関数を使う 5 2023/08/18 19:45
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Excel(エクセル) エクセルで、2つのセルに検索値を入れて結果を一覧表示させる 1 2023/07/10 10:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
Excel 日付を比較したら、同じ...
-
Outlookを立ち上げたらGoogleロ...
-
outlookのメールが固まってしま...
-
会社PCのメールが更新されない
-
【スプレッドシート】指定の日...
-
ウィンドウィズ メモ帳で日付だ...
-
英数字のみ全角から半角に変換
-
Excelで空白以外の値がある列の...
-
Microsoft Formsの「個人情報や...
-
microsoft office
-
MicrosoftOfficeについて質問で...
-
マイクロソフト 一時使用コード...
-
outlookで宛先が異なるメールを...
-
Outlookでの時間指定送信機能に...
-
【スプレドシート】目標達成の...
-
自分の専門分野の仕事。初見で...
-
Microsoft Officeを2台目のPCに...
-
【Excel VBA】PDFを作成して,...
-
エクセルでXLOOKUP関数...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
【スプレッドシート】指定の日...
-
英数字のみ全角から半角に変換
-
会社PCのメールが更新されない
-
マイクロソフト 一時使用コード...
-
Office 2021 Professional Plus...
-
エクセルで例えば、関数を使っ...
-
Microsoft Formsの「個人情報や...
-
1つのPCに「Excel 2010」「Exc...
-
エクセルで例えば、A1に㈱ベ...
-
理由を教えてください。
-
エクセルでXLOOKUP関数...
-
マイクロソフト オフィスについて
-
VLOOKUP関数について
-
teams設定教えて下さい。 ①ビデ...
-
Googleのスプレッドシートでシ...
-
【Excel VBA】PDFを作成して,...
-
Microsoft365で写真をアルバム...
-
Outlook で宛先が複数の場合の人数
-
Excel テーブル内の空白行の削除
おすすめ情報