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

お世話になっております。

分かりづらいですが、イメージとしてはこのような感じの表を作りたいのです
(数の計算列、セルの色塗りは不要です)
http://fast-uploader.com/file/6972978179745/

表1、表2の行数は可変です。(空欄の場合もあります)
表2の所属コードは必ず表1にもあります。

自分の知識では考えても形にならず、どうか知恵をお借りできないでしょうか

A 回答 (4件)

こんばんは!



やはりVBAでやってみました。
すでに的確な回答が出ていますので、参考程度で・・・

>(空欄の場合もあります)
が少し引っかかりますので、途中に空白セルがあっても対応できるようにしています。

↓の画像のようにSheet1が「表1」・Sheet2が「表2」として、Sheet3に表示するようにしてみました。
標準モジュールにコピー&ペーストしてマクロを実行してみてください。

Sub Sample1()
Dim i As Long, k As Long, lastRow As Long
Dim c As Range, wS1 As Worksheet, wS2 As Worksheet
Set wS1 = Worksheets("Sheet1")
Set wS2 = Worksheets("Sheet2")
Application.ScreenUpdating = False
With Worksheets("Sheet3")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
If lastRow > 1 Then
Range(.Cells(2, "A"), .Cells(lastRow, "C")).ClearContents
End If
For i = 2 To wS1.Cells(Rows.Count, "A").End(xlUp).Row
If wS1.Cells(i, "B") <> "" Then
Set c = wS2.Range("A:A").Find(what:=wS1.Cells(i, "B"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
k = c.Row
Do While wS2.Cells(k, "A") <> "" And wS2.Cells(k, "A") = c
With .Cells(Rows.Count, "A").End(xlUp).Offset(1)
.Value = c
.Offset(, 1) = wS2.Cells(k, "B")
.Offset(, 2) = wS1.Cells(i, "C") * wS2.Cells(k, "C")
End With
k = k + 1
Loop
End If
End If
Next i
Application.ScreenUpdating = True
.Activate
End With
End Sub

こんな感じではどうでしょうか?m(_ _)m
「vba:二つの表から新しい表を作る」の回答画像4
    • good
    • 0
この回答へのお礼

回答、ありがとうございます
思い描いていた通りの処理をしてくれました。

空欄の場合にも対応してくださり、ありがとうございます。

お礼日時:2014/12/02 09:15

こんばんは。



イメージとしてはこんな感じかな(^^;
>(空欄の場合もあります)
ここが分かりませんが、後は考えてください。
それから、VBAで解決するのが良いのか、関数で解決するのかも、私には見当が付きません。


'//
Sub Test1()
Dim c As Variant
Dim r As Variant
Dim i As Long
i = 4 '最初の行数
For Each c In Range("A4", Cells(Rows.Count, 1).End(xlUp))
If IsNumeric(c.Offset(, 1).Value) Then
 For Each r In Range("E4", Cells(Rows.Count, 5).End(xlUp))
  If c.Offset(, 1).Value = r.Value Then
   Cells(i, 9).Value = r.Value
   Cells(i, 10).Value = r.Offset(, 1).Value
   Cells(i, 11).Value = r.Offset(, 2).Value * c.Offset(, 2).Value
   i = i + 1
  End If
 Next r
End If
Next c
End Sub

'//
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。

このような簡潔なコードで解決できるのですね
あてはめてみるとエラーがでてしまいましたが
いい機会ですのでこのコードを使っても動作できるよう考えてみます

お礼日時:2014/12/02 09:21

ごめん、追記です。



誤:区分できる何等かの項目を・・・
正:区分できる何等かの項目を表1,2の両方に・・・
    • good
    • 0

データ(項目)が足りないのでどうやってもできませんよ。



表1と表2を結びつけるのは「所属コード」しかないんですが、
これがユニーク(単一)ではないですから。「所属コード」が
「10000」と言った場合、「リンゴ1」「リンゴ2」「リンゴ3」の
どれかが分かりませんもん。

ですので、「リンゴ1」「リンゴ2」「リンゴ3」を区分できる何等か
の項目を追加しないといけません。

追加が出来れば、あとは=Vlookup関数だけの話です。
    • good
    • 0
この回答へのお礼

回答、ありがとうございます。
説明を省いてしまって申し訳ありません
りんご1~3がどれなのかは実は必要ないのです。
もう少し情報があれば関数だけでも可能なのですね。

お礼日時:2014/12/02 09:26

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