A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
こんにちは
横からですが、VBAでの別方法の一例です。
データが重複している場合は、結果的に無視してよいものと解釈しました。
途中に空白セルが混在しているなどについては想定していません。
(チェックしてスキップすればよいだけですが…)
データのあるシート名と結果を表示するシート名を正しく修正しておいてください。
(現状はSheet1、Sheet2にしてあります。)
Sub Sample()
Dim sh1 As Worksheet, sh2 As Worksheet
Dim dicR As Object, dicC As Object
Dim rw As Long, maxR As Long
Dim v1, v2
Set sh1 = Worksheets("Sheet1") '←元データのあるシート
Set sh2 = Worksheets("Sheet2") '←結果を表示するシート
Set dicR = CreateObject("Scripting.Dictionary")
Set dicC = CreateObject("Scripting.Dictionary")
maxR = sh1.Cells(Rows.Count, 1).End(xlUp).Row
sh2.Cells.Clear
For rw = 1 To maxR
v1 = sh1.Cells(rw, 1).Value
If Not dicR.exists(v1) Then
dicR.Add v1, dicR.Count + 1
sh2.Cells(dicR(v1), 1).Value = v1
End If
v2 = sh1.Cells(rw, 2).Value
If Not dicC.exists(v2) Then dicC.Add v2, dicC.Count + 2
sh2.Cells(dicR(v1), dicC(v2)).Value = v2
Next rw
Set dicR = Nothing
Set dicC = Nothing
End Sub
No.5
- 回答日時:
No.2です。
>実施してみたところ課題があり・・・
今回はSheet3を作業用として使用するようにしていますので、
操作するブックにはSheet3を使っていない状態にしておいてください。
Sub Sample2()
Dim i As Long, lastRow As Long
Dim c As Range, r As Range
Dim wS2 As Worksheet, wS3 As Worksheet
Set wS2 = Worksheets("Sheet2")
Set wS3 = Worksheets("Sheet3")
wS2.Cells.ClearContents
Application.ScreenUpdating = False
With Worksheets("Sheet1")
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS2.Range("A1"), unique:=True
.Range("B:B").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS3.Range("A1"), unique:=True
wS3.Range("A1").Sort key1:=wS3.Range("A1"), order1:=xlAscending, Header:=xlYes
lastRow = wS3.Cells(Rows.Count, "A").End(xlUp).Row
Range(wS3.Cells(2, "A"), wS3.Cells(lastRow, "A")).Copy
wS2.Range("B1").PasteSpecial Paste:=xlPasteValues, Transpose:=True
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS2.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
Set r = wS2.Rows(1).Find(what:=.Cells(i, "B"), LookIn:=xlValues, lookat:=xlWhole)
wS2.Cells(c.Row, r.Column) = wS2.Cells(1, r.Column)
Next i
End With
wS3.Cells.Clear
wS2.Rows(1).Delete
wS2.Activate
wS2.Range("A1").Select
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
今度はどうでしょうか?m(_ _)m
No.4
- 回答日時:
添付図参照
E1: =IFERROR(INDEX($B$1:$B$15,SMALL(IF($A$1:$A$15=$D1,ROW(A$1:A$15),""),COLUMN(A1))),"")
【お断り】上式は必ず配列数式として入力のこと
No.3
- 回答日時:
多分、No2の方から回答の再提示があると思いますので、いまのところ回答するつもりはありませんが、
>実施してみたところ課題があり
>A1 X1 X2 X3
>B1 空 X2 空 X4
>C1 X1
>D1 空 空 空 空 X5 X6
>E1 空 X2 空 X4 X5 X6
>というようにする必要があることが分かりました。
>ここは、関数で何とかなりそうです
変更前のB列の実際の値は、X1,X2,・・・X999のようにXと数字だけなのですか。
それであれば、マクロで、最初からそのようにすることは可能です。(X1,X2は単なる例で、実際は違う値であればできません)
No.2
- 回答日時:
こんにちは!
VBAになりますが、一例です。
元データはSheet1にあり、Sheet2に表示するとします。
尚、Sheet1の1行目は項目行になっていて、2行目以降にデータがあるとします。
標準モジュールにしてください。
Sub Sample1()
Dim i As Long, lastRow As Long, wS As Worksheet
Set wS = Worksheets("Sheet2")
Application.ScreenUpdating = False
wS.Cells.ClearContents
With Worksheets("Sheet1")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
.Range("A:A").AdvancedFilter Action:=xlFilterCopy, copytorange:=wS.Range("A1"), unique:=True
For i = 2 To wS.Cells(Rows.Count, "A").End(xlUp).Row
.Range("A1").AutoFilter field:=1, Criteria1:=wS.Cells(i, "A")
Range(.Cells(2, "B"), .Cells(lastRow, "B")).SpecialCells(xlCellTypeVisible).Copy
wS.Cells(i, "B").PasteSpecial Paste:=xlPasteValues, Transpose:=True
Next i
.AutoFilterMode = False
End With
wS.Activate
wS.Range("A1").Select
Application.ScreenUpdating = True
MsgBox "完了"
End Sub
こんな感じではどうでしょうか?m(_ _)m
早速ありがとうございます!
頂いたVBAを実施してみたところ無事並び替えができました。
実施してみたところ課題があり
A1 X1 X2 X3
B1 空 X2 空 X4
C1 X1
D1 空 空 空 空 X5 X6
E1 空 X2 空 X4 X5 X6
というようにする必要があることが分かりました。
ここは、関数で何とかなりそうです
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- 数学 場合の数、確率 45 (浜松医科大学) 1 2023/07/29 13:52
- その他(Microsoft Office) IF関数について教えてください 2 2022/05/10 13:31
- Excel(エクセル) エクセルの表で A1にデータの入力規則でリストを作って、 (リス、キリン、ゾウとします) リストを選 4 2022/07/15 09:29
- Excel(エクセル) エクセルで、 A1セルに「A」という値、 B1セルに「B」という値が入っています。 どちらも表示形式 5 2023/02/22 23:05
- Excel(エクセル) ある範囲のセルに何を入力すると、別のセルに○を表示させる 3 2022/04/05 15:51
- Excel(エクセル) エクセル関数教えてください 3 2022/06/21 10:22
- Excel(エクセル) エクセルの関数式を教えてください。 2 2022/11/29 21:09
- 数学 ハイネボレルの被覆定理、内田伏一著 「集合と位相」定理22.1 1 2022/07/07 10:49
- Excel(エクセル) エクセル シート内のボックスを縦並びから横並びに 7 2023/04/05 04:28
- Excel(エクセル) EXCEL関数(数式)を教えてください 2 2022/06/08 18:32
このQ&Aを見た人はこんなQ&Aも見ています
-
性格の違いは生まれた順番で決まる?長男長女・中間子・末っ子・一人っ子の性格の傾向
同じ環境で生まれ育っても、生まれ順で性格は違うものなのだろうか。家庭教育研究家の田宮由美さんに教えてもらった。
-
excelで複数行を一行に並び変える方法
Excel(エクセル)
-
excelで複数行にまたがるデータを1行にまとめたい
Excel(エクセル)
-
重複するIDのデータを1行にまとめるvbaのコード
Access(アクセス)
-
-
4
エクセルで複数行のデータを1列にまとめたい
Excel(エクセル)
-
5
エクセルで複数行に散らばった同一人物の情報を一行にまとめたい
Excel(エクセル)
-
6
エクセルで複数行のデータを1行にする方法
Excel(エクセル)
-
7
エクセルVBAで5行目からオートフィルタモードに設定したいたい
Excel(エクセル)
-
8
VBAのマクロで、複数行を1行に集計
Access(アクセス)
-
9
Excelで一行おきに2行の空白行を挿入したい
その他(Microsoft Office)
-
10
VBAで重複する項目を1つにまとめて金額を合計したい
Excel(エクセル)
-
11
EXCELで特定のセルに表示された項目をヘッダーやフッターに出力するには
Excel(エクセル)
-
12
excel関数式の一部を太字にする
その他(Microsoft Office)
-
13
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
14
エクセルで複数列を1列にまとめるマクロ
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
excelの不要な行の削除ができな...
-
複数シートからデータを拾って...
-
Excelでシートの違うデータでグ...
-
エクセルファイルのシート毎の容量
-
シート削除して同名シート追加...
-
エクセルのデータ振り分け方法...
-
Excelで日付変更ごとに、自動的...
-
エクセルで名簿を50音で切り分ける
-
EXCELで2つのファイルから重複...
-
エクセル マクロ "特定の日付...
-
EXCEL 複数行のデータを1行にま...
-
トランジスタの選び方
-
【エクセル」 特定のセルで条件...
-
Excelファイルの容量が異常に大...
-
VBAで CTRL+HOMEの位置へ移動...
-
エクセル VBA VLOOKUP
-
Excelの改行について
-
EXCEL の表を一行ずつシートに...
-
【マクロ】同じフォルダ内にあ...
-
オートフィルタで抽出したデー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
複数シートからデータを拾って...
-
excelの不要な行の削除ができな...
-
エクセルファイルのシート毎の容量
-
Excelでシートの違うデータでグ...
-
シート削除して同名シート追加...
-
Excelで日付変更ごとに、自動的...
-
VBAで CTRL+HOMEの位置へ移動...
-
【エクセルマクロ】複数シート...
-
トランジスタの選び方
-
EXCEL 複数行のデータを1行にま...
-
EXCELで2つのファイルから重複...
-
別々のシートの表をピボットテ...
-
エクセル VBA VLOOKUP
-
他のシートの一番下の行データ...
-
エクセルのカメラ機能について
-
時間帯の重複を除いた集計について
-
EXCEL の表を一行ずつシートに...
-
ファンモータが作動しない。
-
エクセルで名簿を50音で切り分ける
-
エクセル マクロ "特定の日付...
おすすめ情報