![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?c9bd177)
下記のようなエクセルでシート1のB男さんのD列を成約に変更した時、
シート2の一番下にB男さんが反映されるよう数式を組むことは可能でしょうか。
現在シート1のB列に=IF(D2="成約",MAX(B1:B1)+1,"")で成約No.は自動で入力し
シート2のB列はA列の数字からVLOOKUPで名前を引いてきています。
シート1
A B C D
No. 成約No. 名前 結果
1 1 A子さん 成約
2 B男さん 進行中
3 2 C太さん 成約
シート2
A B C
成約No. 名前 TEL
1 A子さん ●●●
2 C太さん △△△
ただこのままですと、シート1のD列の結果欄を「成約」に変更すると
シート2のA子さんの下にB男さんが入ってしまう(下記のような形になってしまう)ので、
シート2のC列以降に他の情報を入力しているとずれてしまい困っています。
シート2
A B C
成約No. 名前 TEL
1 A子さん ●●●
2 B男さん △△△
3 C太さん
ちなみにマクロの知識は全くと言っていいほどありませんが
やはりマクロとかが必要なのでしょうか。
Excel初心者でこちらの掲示板に質問させて頂くのも初めてですので
失礼な点やわかりにくい点などがございましたら、ご容赦ください。
何卒、よろしくお願い致します。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
シート1の成約の部分は自分で手入力するとして、
Dim r as integer
Dim i as integer
i = Sheets("Sheet2").Range("B"&Rows.Count).End(xlUp).Row+ 1
'とにかく成約であればシート1の名前をシート2に入力する。
Do until Sheets("Sheet1").Cells(r,4) = ""
If Sheets("Sheet1").Cells(r,4) = "成約" then
Sheets("Sheet2").Cells(i,2) = Sheets("Sheet1").Cells(r,3)
i = i + 1
Endif
Loop
’同性は削除
r = 1
Do until Sheets("Sheet2").Cells(r,2) = ""
i = r+ 1
Do until Sheets("Sheet2").Cells(i,2) = ""
if Sheets("Sheet2").Cells(r,2) = Sheets("Sheet2").Cells(i,2) Then
Sheets("Sheet2").Cells(i,2).EntireRow.Delete
i = i - 1
end if
i = i + 1
Loop
r = r + 1
Loop
的な?
No.3
- 回答日時:
こんばんは!
>現在シート1のB列に=IF(D2="成約",MAX(B1:B1)+1,"")で成約No.は自動で入力し・・・
その数式でD列が「成約」になった順にちゃんと連番が表示されますか?
それはさておいて、Sheet1のB列は成約順に連番が表示されるものとして、
Sheet1のD列が「成約」になった順にSheet2に表示させたいのですね?
VBAになりますが一例です。
質問文ではSheet1にない項目がSheet2にありますね?(TELの列)
こちらではどの列か判断できないので、その列を検索するコードも入れています。
(逆にいえば表示させたい列がはっきりすればもう少し短いコードでできます)
画面左下のSheet1のSheet見出し上で右クリック → コードの表示 → VBE画面のカーソルが点滅しているところに
↓のコードをコピー&ペースト → Excel画面に戻り(VBE画面を閉じて)
Sheet1のD列を変更してみてください。
Private Sub Worksheet_Change(ByVal Target As Range) 'この行から//
Dim j As Long, myRow As Long
Dim c As Range, wS1 As Worksheet, wS2 As Worksheet
If Intersect(Target, Range("D:D")) Is Nothing Or Target.Count > 1 Then Exit Sub
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
With Target
If .Value = "成約" Then
myRow = wS2.Cells(Rows.Count, "A").End(xlUp).Row + 1
wS2.Cells(myRow, "A") = WorksheetFunction.Max(wS2.Range("A:A")) + 1
wS2.Cells(myRow, "B") = .Offset(, -1)
'▼ここからSheet2の項目と一致する列の検索//
For j = 3 To wS2.Cells(1, Columns.Count).End(xlToLeft).Column
Set c = wS1.Rows(1).Find(what:=wS2.Cells(1, j), LookIn:=xlValues, lookat:=xlWhole)
On Error Resume Next '←念のため★
wS2.Cells(myRow, j) = wS1.Cells(.Row, c.Column)
Next j
End If
End With
End Sub 'この行まで//
※ Sheet2は実データとしていますので、数式が入っている場合はすべて消えてしまいます。
※ 関数でないので一旦「成約」となった行が「不成約」になっても
元に戻せません。m(_ _)m
No.2
- 回答日時:
たぶんに、質問の内容から察して、シート1に成約になった日付と時間が必要と云う事ですよね。
F列に 成約日を準備して
成約したら、 Ctrl+ + キーで日付、その後に スペース
更に Ctrl+* で時間を入れるしかないでしょう。
シート1のB列の関数を
=IF(F2="","",RANK(F2,F:F,1))
下へコピーしておく???
F劣に日付と時間を入れるのか手間ならマクロの方法がありますが
D列を間違って操作した場合など考えると手入力が無難かと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excelで質問です! 現在マクロを勉強中の初心者です。 以下のような表から、会社名が空白のもの以外 2 2022/06/14 12:16
- Visual Basic(VBA) エクセルのマクロで対象ごとにシート分けしてその内容をセルに書き込みたい 9 2022/08/24 13:23
- Excel(エクセル) EXCEL 関数を教えてください。(A列の同じ値が複数ある場合vlookupで出来ますか) 4 2022/12/07 20:54
- Visual Basic(VBA) VBA 最終行まで数式をコピーする 3 2023/01/03 15:44
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Excel(エクセル) vba シート名の一覧を2列に分けるには 5 2023/04/24 08:56
- Visual Basic(VBA) Changeイベントで複数セルへの貼り付けおよび値削除時に1個目のセルのみエラーになる 3 2022/12/21 09:07
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Excel(エクセル) 【エクセル」 特定のセルで条件抽出した列を、別シートに上から詰めて表示したい。 8 2022/04/08 16:00
- Excel(エクセル) Excelマクロ 差分抽出の方法が知りたいです。 2 2023/03/07 13:25
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAで繰り返しコピーしながら下...
-
Excelマクロのコンボボックスに...
-
*EXCEL*2シートにあるデータを...
-
Excel の複数シートの列幅を同...
-
エクセルの列の限界は255列以上...
-
Excel VBA ピボットテーブルに...
-
エクセルの保護で、列の表示や...
-
エクセル雑談です。 機能面・処...
-
【条件付き書式】countifsで複...
-
複数シートのデータを別シート...
-
エクセルの複数シートにあるデ...
-
VLOOKアップ関数の結果の...
-
スプレッドシートでindexとIMPO...
-
エクセルVBAで、ある文字を含ん...
-
【VBA】シート名と見出しが一致...
-
エクセルで横並びの複数データ...
-
2つのシートのデータ集計をした...
-
Excelに自動で行の増減をしたい...
-
EXCELで複数のシートを一度に「...
-
複数シートからデータを拾って...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
文字の色も参照 VLOOKUP
-
ExcelのVlookup関数の制限について
-
エクセルの保護で、列の表示や...
-
VBAで繰り返しコピーしながら下...
-
Excel の複数シートの列幅を同...
-
エクセルで横並びの複数データ...
-
エクセルの列の限界は255列以上...
-
【条件付き書式】countifsで複...
-
Excelでの並べ替えを全シートま...
-
SUMPRODUCTにて別シートのデー...
-
エクセル マクロ 標準モジュー...
-
VLOOKアップ関数の結果の...
-
エクセルで、チェックボックス...
-
Excel VBA ピボットテーブルに...
-
オートフィルタ使用時にCOUNTIF...
-
スプレッドシートでindexとIMPO...
-
エクセルVBAで、ある文字を含ん...
-
エクセルのブック分割マクロを...
-
【VBA】複数のシートの指定した...
-
Excel複数シートにあるデータを...
おすすめ情報
説明不足で、わかりにくくて申し訳ありません。
シート1がお問合せ頂いたお客様の一覧で
シート2がご成約されたお客様のデータで作成しております。
ご成約される順番が、問合せ順とは限らないので
シート1、D列を「成約」にすると
シート2の一番下へ名前が反映されるようにしたいです。
シート2
A B C
成約No. 名前 TEL
1 A子さん ●●●
2 C太さん △△△
3 B男さん
ご教授願えればと思います。
早速お返事頂きましてありがとうございます。
説明が下手で申し訳ありません。
VLOOKUPについては完全一致になっております。
検索した条件を別シートの一番下に積み上げて(下げて?)いくといったら良いでしょうか…
説明が下手で申し訳ありません(>_<)