アプリ版:「スタンプのみでお礼する」機能のリリースについて

①このような顧客台帳がシートがあります(エクセルシートで3列)

顧客番号 売り上げ 個数
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125


②それに対して某代理店から上がってきた売上は以下でした。

顧客番号 売り上げ 個数
111    1000   1
115    2000   1
116    1000   1
117    2000   1
120    1000   1
121    2000   1
125    2000   1


この代理店からの売上を最初の①のシートに
あてこめるように以下のように反映したいのですが、
Accessを使わないでエクセル上でする方法はないでしょうか。
①へは後でコピペで貼り付けてもOKです。


③顧客番号 売り上げ 個数
111    1000   1
112
113
114
115    2000   1
116
117    2000   1
118
119
120    1000   1
121    2000   1
122
123
124
125    2000   1


お知恵いただければ幸いです。

A 回答 (5件)

EXCEL2003以前と考え、B2セルに


=IF(ISNA(MATCH($A2,$E:$E,0)),"",INDEX(F:F,MATCH($A2,$E:$E,0)))
右へオートフィル→フィルハンドルダブルクリック
添付図参照、VLOOKUP関数やIFERROR関数(2007以降)も検索してみましょう
「xls,上だけで歯抜けの売上データを反映」の回答画像1
    • good
    • 0
この回答へのお礼

わかりやすく大変恐縮です。お礼申し上げます。

お礼日時:2017/04/20 12:24

No3です。


以下のマクロを標準モジュールへ登録してください。
------------------------------------------------
Option Explicit
Public Sub 売上データ反映()
Dim dicT As Object
Dim sh1, sh2 As Worksheet
Dim maxrow1, maxrow2, row1, row2 As Long
Dim key As String
Set dicT = CreateObject("Scripting.Dictionary")
Set sh1 = Worksheets("マスター")
Set sh2 = Worksheets("特約代理店")
maxrow1 = sh1.Cells(Rows.Count, 1).End(xlUp).row
maxrow2 = sh2.Cells(Rows.Count, 1).End(xlUp).row
For row1 = 2 To maxrow1
key = sh1.Cells(row1, 1).Value
dicT(key) = row1
Next
For row2 = 2 To maxrow2
key = sh2.Cells(row2, 1).Value
If dicT.exists(key) = True Then
row1 = dicT(key)
sh1.Cells(row1, 2).Value = sh2.Cells(row2, 2).Value
sh1.Cells(row1, 3).Value = sh2.Cells(row2, 3).Value
Else
MsgBox (row2 & "行の顧客番号=" & key & "はマスターになし")
End If
Next
MsgBox ("完了")
End Sub
-----------------------------------------
    • good
    • 0
この回答へのお礼

これほどまでに・・・ありがとうございます。帰社次第、ためしてみます!!!

お礼日時:2017/04/20 15:48

シート①にシート②のデータを参照して表示させるとします。


1行目からデータがあり、A列:顧客番号、B列:売上、C列:個数、とします。

シート①A列は御自身で入力してください。
ROWを使うなり、上のセル+1とするなり。

シート①B列は、A列に一致するデータがシート②のA列に存在すれば、VLOOKUPで2列目を、
存在しなければ空白を表示させればいいので、
B1=IF(COUNTIF(シート②!A:A,A1)=0,"",VLOOKUP(A1,シート②!A:C,2,FALSE))
これをA列に入力したデータの数だけ下にコピーしましょう。

シート①C列はB列とほぼ同じで、VLOOKUPで表示するのが3列目というだけなので、
C1=IF(COUNTIF(シート②!A:A,A1)=0,"",VLOOKUP(A1,シート②!A:C,3,FALSE))
とすればよいです。同様にコピーしてください。
    • good
    • 0
この回答へのお礼

ありがとうございます!

お礼日時:2017/04/20 12:22

マクロでなら提供可能ですが、それを望んでますか。


その場合は、以下の補足をお願いします。
1)顧客台帳のシート名
2)某代理店から上がってきた売上のシート名
3)セルの位置情報は以下の前提で良いですか。
①1行目は見出し(A列:顧客番号、B列:売上、C列:個数)
②データは2行目から開始
    • good
    • 0
この回答へのお礼

tasu99様

1)マスター
2)特約代理店
3)はい、ご理解の通りです。

丁寧なご質問恐縮です!

お礼日時:2017/04/20 12:22

①:ブック名=顧客台帳、シート名=Sheet1


②:ブック名=代理店、シート名=Sheet1

バージョンが不明なので、どれでも行ける様に。
ブック名、シート名は正しく修正して下さい。

①のB2,C2に以下を入れ、コピーして下まで貼り付け。
B2に
=IF(ISNA(VLOOKUP(A2,[顧客台帳.xls]Sheet1!$A$2:$C$6,2,FALSE)),"",VLOOKUP(A2,[代理店.xls]Sheet1!$A$2:$C$6,2,FALSE))

C2に
=IF(ISNA(VLOOKUP(A2,[顧客台帳.xls]Sheet1!$A$2:$C$6,3,FALSE)),"",VLOOKUP(A2,[代理店.xls]Sheet1!$A$2:$C$6,3,FALSE))
    • good
    • 0
この回答へのお礼

ありがとうございます。試してみます。

お礼日時:2017/04/20 12:23

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!