![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
No.1ベストアンサー
- 回答日時:
こんにちは
①も②も考え方は同じなので、どちらがより簡単ということはなさそうです。
例えば①の例で、ご提示のレイアウトのままで良ければ、C14セルに
=IFERROR(INDEX($A:$A,AGGREGATE(15,6,ROW($B$3:$F$8)/($B$3:$F$8=C$13),ROW(A1))),"")
の式を入力して、表の範囲にフィルコピーすれば可能と思います。
スピル機能が使える環境(Office365等)であれば、C14セルに
=FILTER($A3:$A8,COUNTIF(OFFSET($B3:$F3,ROW(A1:A6)-1,),C13),"")
を入力して、右方にフィルコピーすれば、下方にはスピルされます。
ご回答ありがとうございます!
ご教示いただいた関数を使用したところやりたいことができました!FILTER関数が私の環境では利用できない様子なので、こちら是非活用させていただきます。
No.3
- 回答日時:
#2誤記訂正
出力はSheet1 A3セル >>出力はSheet2 A3セル
補
' rng.Select は 条件による取得範囲の確認用の残骸ですので消してください
No.2
- 回答日時:
VBAの例ですが 処理工程を複数作る事になりそうです
①日付 を重複しない値として取得 合わせて該当する名前を取得
②日付を昇順に並び替え
③①の処理上名前を取り出し出力
サンプルフォーマット②の配置
取得はSheet1 A2セルから空白に囲まれた範囲
*名前列の途中に空白セルが無い事
出力はSheet1 A3セル
見出し行はサンプル処理に入れていませんので加えてください
関数処理よりVBAコードは複雑に見えると思いますので 関数で行う方が
良いと思います
Sub 出力フォーマット2()
Dim Dic As Object
Set Dic = CreateObject("Scripting.Dictionary")
Dim rng As Range
'Sheet1の操作
With Worksheets("Sheet1")
With .Range("A2").CurrentRegion
Set rng = .Offset(1, 1).Resize(.Rows.Count - 1, .Columns.Count - 1)
' rng.Select
End With
'範囲より重複しない日付を取得
'合わせて名前を取得
Dim cell As Range
For Each cell In rng
If cell.Value <> "" Then
If Not Dic.exists(cell.Value) Then
Dic.Add cell.Value, .Cells(cell.Row, 1).Value
Else
'名前を仕切り文字で繋げて取得
Dic(cell.Value) = Dic(cell.Value) & "|" & .Cells(cell.Row, 1).Value
End If
End If
Next
End With
Dim myKey, myItem
Dim i As Long
myKey = Dic.keys
myItem = Dic.items
'Sheet2の操作
With Worksheets("Sheet2")
'取得した値を出力
For i = 0 To UBound(myKey)
.Cells(i + 3, 1).Value = myKey(i)
.Cells(i + 3, 2).Value = myItem(i)
Next
Set rng = Nothing
Set Dic = Nothing
'出力範囲を日付で並び替え
Set rng = .Range("A3").CurrentRegion
.Sort.SortFields.Clear
.Sort.SortFields.Add2 Key:=rng.Columns(1) _
, SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With .Sort
.SetRange rng
.Header = xlNo
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
'繋げて取得した名前を切り離し(分けて)出力
Dim r, c, vName
For r = 1 To rng.Rows.Count
vName = Split(rng(r, 2), "|")
For c = 0 To UBound(vName)
rng(r, c + 2) = vName(c)
Next
Next
End Sub
ご回答ありがとうございました!
いただいたVBAコードなかなか複雑に見え、初心者の私にはハードルが高そうでした^^;
ただ大変勉強になりましたので今後の参考にさせていただきます!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語初心者 構造体 課題について 1 2023/03/10 19:30
- Excel(エクセル) 名前と日付が一致する箇所にフラグを立てる関数が知りたいです 4 2022/08/11 02:24
- Excel(エクセル) [Excel2016] 相関表等の自動作成 2 2022/08/01 20:34
- Excel(エクセル) Excel 表の作成について 3 2022/06/16 12:15
- Visual Basic(VBA) 【VBA】データを入力後に,同一シート内に履歴として転記するVBAコードを教えていただきたいです。 3 2022/11/16 01:37
- Excel(エクセル) エクセルの散布図で新たに入力した値のデータラベルが空欄になる現象 1 2022/04/26 09:31
- Excel(エクセル) エクセルで”入力シート”の文字書式の変更を”出力シート”で同じ文字書式で印刷したいです。VBA希望 4 2023/04/24 11:07
- Excel(エクセル) Excel(エクセル)でフィルター抽出後、非表示の行を計算しないで、合計を算出する方法 【内容】 添 4 2023/01/30 17:17
- Excel(エクセル) エクセルで指定範囲にある名前と重複した場合に入力できないようにしたい 1 2023/07/13 09:58
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで 自動的に◯や数字を...
-
【マクロ】2回実行したら、エ...
-
エクセルのツールバーから数値...
-
特定の文字列を含む、住所を抽...
-
Excel 2019 [オプション]の[リボンのユ...
-
祝日と土曜、日曜の合計をカウ...
-
EXCELの散布図で日付が1900年に...
-
マイクロソフトのPADを使ってい...
-
絶対参照
-
エクセルでCtrl+Tでテーブルの...
-
【マクロ】名前を保存する際に...
-
エクセルのクイックアクセスツ...
-
【マクロ】VLOOKUPにて参照元に...
-
Excel分数の表示について
-
【EXCEL】画像の黄色部分の抽出...
-
DATE関数で現在の年齢を出した...
-
Excelについて
-
マクロエクセルのブロック解除
-
Excelピボットテーブルの1行目
-
REGEXREPLACE関数について、
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
半角カタカナをヘボン式ローマ...
-
(マクロ)vlookupの元データを同...
-
エクセルで上位バイトのセルと...
-
exselの質問です
-
Excel 大小比較演算子による「...
-
Excel VBについての質問です。
-
エクセルの問題です。絶対値の...
-
非表示列の再表示に失敗
-
職場の人から聞かれており、こ...
-
Excel関数-文字列で自動作成さ...
-
Excelデータをコピペして、ペー...
-
ユーザー定義関数をアドイン登...
-
【マクロ】for next構文について
-
エクセルの日付を編集する
-
【マクロ】VLOOKUPにて参照元に...
-
exselで最小数で並び替える関数
-
libre 表計算ソフトの計算がう...
-
エクセルで表
-
エクセルの表で1年間の曜日を...
-
西暦和暦
おすすめ情報