No.3ベストアンサー
- 回答日時:
お示しの表が Sheet1 にあるとして、添付図に示す Sheet2 を作成します。
Sheet2 において、
1.式 =IF(Sheet1!$A1="","",Sheet1!A1) を入力したセル A1 を右に2列
 ̄ ̄オートフィル2.範囲 A1:C1 を下方に好きなだけ(此処では 1000行目
 ̄ ̄まで)コピー
3.下記の各セルにそれぞれの右側に示す式 を入力
 ̄ ̄ D2: =IF(A2="","",B2&" "&C2)
 ̄ ̄ E2: =IF(A2="","",COUNTIF(D$2:D$1000,D2))
 ̄ ̄ F2: =IF(A2="","",IF(COUNTIF(D$2:D2,D2)=1,D2,""))
4.範囲 D2:F2 のフィルハンドルを「エイヤッ!」とダブルクリック
Sheet1 において、
5.G/標準"月度"
 ̄ ̄に書式設定したセル E1 に数値の 6 を入力
6.下記の各セルにそれぞれの右側に示す式 を入力
 ̄ ̄ F2: =IFERROR(INDEX(Sheet2!C$1:C$1000,SMALL(IF((Sheet2!$A$1:$A$1000=$E$1)*(Sheet2!$F$1:$F$1000<>""),ROW($E$1:$E$1000),""),ROW(A1))),"")
 ̄ ̄ G2: =IFERROR(INDEX(Sheet2!B$1:B$1000,SMALL(IF((Sheet2!$A$1:$A$1000=$E$1)*(Sheet2!$F$1:$F$1000<>""),ROW($E$1:$E$1000),""),ROW(B1))),"")
 ̄ ̄ I2: =IFERROR(INDEX(Sheet2!E$1:E$1000,SMALL(IF((Sheet2!$A$1:$A$1000=$E$1)*(Sheet2!$F$1:$F$1000<>""),ROW($E$1:$E$1000),""),ROW(D1))),"")
【お断り】上式は全て必ず配列数式として入力のこと
7.範囲 F2:I2 を下方に必要十分なだけオートフィル
No.5
- 回答日時:
No.4です。
基本的には元のB・C列の書式に合わせているはずですが明確に指定というのであれば、
Sub abc_2()
Dim Dic As Object
Dim st As String, r As Range
Dim tuki As Integer
Set Dic = CreateObject("Scripting.Dictionary")
With Worksheets("Sheet1") '★ 仮にSheet1
.Range("F:G").ClearContents
.Range("F1:G1").Value = Array("ID", "納品日")
.Columns("F:G").HorizontalAlignment = xlCenter
.Columns("F:F").NumberFormatLocal = "@" ' ★.Columns("C:C").NumberFormatLocal
.Columns("G:G").NumberFormatLocal = "mm/dd" ' ★.Columns("B:B").NumberFormatLocal
tuki = .Range("E1").Value
For Each r In .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
If r.Value = tuki Then
st = tuki & "_" & r.Range("B1").Text & "_" & r.Range("C1").Text
If Not Dic.Exists(st) Then Dic.Add st, Array(r.Range("C1").Text, r.Range("B1").Value2)
End If
Next
.Range("F2").Resize(Dic.Count, 2).Value = _
Application.Transpose(Application.Transpose(Dic.Items))
End With
Set Dic = Nothing
End Sub
このような感じでしょうか?
No.4
- 回答日時:
こんな感じでどうでしょう?(罫線は入れてませんが・・・)
Sub abc()
Dim Dic As Object
Dim st As String, r As Range
Dim tuki As Integer
Set Dic = CreateObject("Scripting.Dictionary")
With Worksheets("Sheet1") '★ 仮にSheet1
.Range("F:G").ClearContents
.Range("F1:G1").Value = Array("ID", "納品日")
.Columns("F:G").HorizontalAlignment = xlCenter
.Columns("F:F").NumberFormatLocal = .Columns("C:C").NumberFormatLocal
.Columns("G:G").NumberFormatLocal = .Columns("B:B").NumberFormatLocal
tuki = .Range("E1").Value
For Each r In .Range("A2", .Cells(Rows.Count, 1).End(xlUp))
If r.Value = tuki Then
st = tuki & "_" & r.Range("B1").Text & "_" & r.Range("C1").Text
If Not Dic.Exists(st) Then Dic.Add st, Array(r.Range("C1").Text, r.Range("B1").Text)
End If
Next
.Range("F2").Resize(Dic.Count, 2).Value = _
Application.Transpose(Application.Transpose(Dic.Items))
End With
Set Dic = Nothing
End Sub
No.1
- 回答日時:
>F列、G列に抽出したいのです。
I列の件数は無視で構わない?
>※1 同じ売上月でも納品日が違えば抽出する。
納品日が同じでもIDが違えば分けなきゃいけない?(それともこんな事はあり得ない?)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel 売上管理シートに入力した売上データを、日報に自動反映させたいと考えています。 売上管理シ 3 2023/04/29 18:08
- Excel(エクセル) Excelで日報を自動で作成したい 売上管理シートに入力した売上データを、日報に自動反映させたいと考 1 2023/04/29 18:07
- Visual Basic(VBA) Sheet3から2つの条件でオートフィルターで抽出した個数をSheet2へ入力するマクロで、一つ目の 4 2023/01/12 23:40
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
- Visual Basic(VBA) 前回ご教授いただいたコードに覚えたてのループ処理で品名りんごAから順に20回for nextでループ 7 2023/01/13 22:01
- Excel(エクセル) 日付以外のデータを抽出したいのですが、 6 2023/06/27 13:32
- Excel(エクセル) Excelマクロの差分抽出のコードを教えていただきたいです。 2 2023/03/14 11:40
- Excel(エクセル) Excelの関数でこんな処理ができますか 1 2023/02/08 13:46
- Visual Basic(VBA) Sheet2からオートフィルターで売上日を抽出した件数をカウントし、その件数をSheet1のセルB1 2 2023/01/12 12:24
- その他(Microsoft Office) Excelの関数(FILTER関数)について教えてください 2 2023/07/31 16:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルでの作業計算方法について
-
はがきについて。
-
エクセル 文字を増やしたい。
-
セルの内容表示が邪魔になる
-
Microsoft365に変えたのですが...
-
エクセルの計算
-
Microsoft1Officeの互換ソフト...
-
【マクロ】その時、その時で変...
-
【マクロ】読取専用のファイル...
-
エクセル初心者です 関数の入れ...
-
Excel ピボットテーブルで日付...
-
【関数】適切な文字数の数字を...
-
LOOKUP関数を使えばいいのでし...
-
Aというブックの1というシート...
-
エクセル関数を教えてください
-
Excelのチェックボックスの使い...
-
エクセル 白黒印刷で白線を印刷...
-
時間によってファイル名が変わ...
-
WPS OFFICEでの縦書きについて
-
エクセルの条件付き書式につい...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel 2019 のピボットテーブル...
-
[関数得意な方]教えて下さい・...
-
Excelにてある膨大なデータを管...
-
[関数について]わかる方教えて...
-
Excel初心者です。 詳しい方、...
-
excelの不要な行の削除ができな...
-
エクセル関数に詳しい方教えて...
-
INDIRECTを使わず excelで複数...
-
[オートフィルタ]で抽出された...
-
エクセルの神よ、ご回答を! エ...
-
エクセル関数に詳しい方、教え...
-
各ページの1番上の表示について
-
Excelで写真のような表を作った...
-
エクセルで不等号記号(≠)が上に...
-
数学 Tan(θ)-1/Cos(θ)について...
-
Excel 2019 は、SPILL機能があ...
-
Excelで全角を半角にしたいので...
-
条件付き書式を教えてください
-
Excel フィルターを掛けた状態...
-
[オートフィルタ]の適用範囲の...
おすすめ情報
忘れましたので追加捕捉します。
※3 E1 に 1~12で該当する月を入れます。
この場合は 6 と入れています。
早速のご質問をありがとうございます。
1) I列の件数は無視で・・
答え
分かりやすくする溜めにお示ししました。
無視していただいて結構です
2) >※1 同じ売上月でも納品日が・・
答え
日々の営業をデータしています。
例えば
ID 0030
納品日 5/3 5/20
たまたま説明用としてわかりやすくするためほんの一部だけしか示していませんが
同じID(会社)で納品日の違う取引はあります。
このIDが同じで納品日が違うか何回あるかは定かでありません。
3) 納品日が同じでもIDが違えば分けなきゃ・・
答え
先ほども答えましたがどちらかというと 納品別でIDですかね。
納品日同じでIDが違ったとしても分けて表示したい。
よろしくお願いします。
ありがとうございます。
VBAは素人ですが省力化したいのでよろしくお願いいたします。
でもすごいですね。
ありがとうございます。
テストした結果、うまくできましたが
私の望みが下記のように2点修正をお願いします。
実行の結果
F列 F2 10 F3 20 を文字列にしていただきたい
F2 0010 F3 0020 という具合にです。
G列は
G2 4月21日 をmm/dd形式に
G2 04/21
よろしくお願いいたします。