A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
No.1・3です。
>With Worksheets("Sheet2").Range("B2:B5000")
>⇒ここのデータのある最終行までとする場合どうすればよいのでしょうか。
今回の数式に関しては参照先の範囲指定が必要になります。
Sheet1の最終行が判らないので、列全体を対象としても良いのですが、
それでは計算速度がかなり落ちてしまうため、とりあえずSheet1の20000行までの範囲としてみました。
(ワークシート関数の数式をそのまま使用する場合、セル番地が必要になりますので・・・)
※ Sheet1のデータは20000行まであってもなくても問題ありません。
Sub Sample4()
Dim lastRow As Long
With Worksheets("Sheet2")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row '//←Sheet2のA列最終行
With Range(.Cells(2, "B"), .Cells(lastRow, "B"))
.Formula = "=IF(COUNTIFS(Sheet1!A$2:A$20000,A2,Sheet1!F$2:F$20000,""<>""),"""",""ひとつもない"")"
.Value = .Value
End With
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
No.3
- 回答日時:
No.1です。
補足の関数をそのままコードにするだけですが
文字列には通常の関数と異なり、ダブルクォーテーションを追加してやる必要があります。
Sub Samle2()
With Worksheets("Sheet2").Range("B2:B5000")
.Formula = "=IF(SUMPRODUCT((Sheet1!A$2:A$5000=A2)*(Sheet1!F$2:F$5000<>""""))=0,""ひとつもない"","""")"
.Value = .Value
End With
End Sub
※ Excel2013をお使いだというコトですので、計算速度が遅くなる
SUMPRODUCT関数(配列数式)ではなくCOUNTIFS関数で対応できると思います。
Sub Sample3()
With Worksheets("Sheet2").Range("B2:B5000")
.Formula = "=IF(COUNTIFS(Sheet1!A$2:A$5000,A2,Sheet1!F$2:F$5000,""<>""),"""",""ひとつもない"")"
.Value = .Value
End With
End Sub
といった感じの方が速いと思います。
※ 数式がそのまま残っても良いのであれば
Sub Sample4()
Worksheets("Sheet2").Range("B2:B5000").Formula = _
"=IF(COUNTIFS(Sheet1!A$2:A$5000,A2,Sheet1!F$2:F$5000,""<>""),"""",""ひとつもない"")"
End Sub
ぐらいでOKだと思います。m(_ _)m
No.2
- 回答日時:
そのまま、VBAのWorksheetfunctionを使ってはどうでしょうか
Sheet2の名前のタブを右クリック
コードの表示をクリック
VBエディターが起動したら
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Column = 1 Then
Target.Offset(0, 1).Value = WorksheetFunction.VLookup(Target.Value, Sheets("Sheet1").Columns("A:B"), 2, False)
End If
End Sub
を張り付けて閉じる。
A列に、何か入れるとB列に答えが出ると思います。
No.1
- 回答日時:
こんにちは!
質問の上側がSheet1で下側がSheet2とし、
両Sheetとも1行目は項目行で、データは2行目以降にあるとします。
いかにもVBAらしい感じとしては
Sub Sample1()
Dim i As Long, c As Range, wS As Worksheet
Set wS = Worksheets("Sheet1")
With Worksheets("Sheet2")
For i = 2 To .Cells(Rows.Count, "A").End(xlUp).Row
Set c = wS.Range("A:A").Find(what:=.Cells(i, "A"), LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
.Cells(i, "B") = c.Offset(, 1)
End If
Next i
End With
End Sub
こんな感じでしょうかね。
VBAでもワークシート関数がそのまま利用できますので、↓の方が簡単かもしれません。
Sub Sample2()
Dim lastRow As Long
With Worksheets("Sheet2")
lastRow = .Cells(Rows.Count, "A").End(xlUp).Row
With Range(.Cells(2, "B"), .Cells(lastRow, "B"))
.Formula = "=IF(COUNTIF(Sheet1!A:A,A2),VLOOKUP(A2,Sheet1!A:B,2,FALSE),"""")"
.Value = .Value
End With
End With
End Sub
こんな感じではどうでしょうか?m(_ _)m
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAでvlookup関数から、別シート参照するやり方・・・ 2 2022/11/14 18:49
- Visual Basic(VBA) Excel VBA 最終行を取得しVlookup関数をコピーする方法をコーディングで教えてください。 3 2023/05/11 13:14
- Visual Basic(VBA) エクセルVBAで『A列』に新規で数値を入力し『B列』から右方向の空白セルにその値を貼り付ける方法 4 2022/11/05 08:37
- Excel(エクセル) SUMIFSと日付変換 10 2023/04/16 15:38
- Excel(エクセル) 単価シートから単価をエクセル関数で自動取得する方法 1 2023/07/02 22:00
- Excel(エクセル) エクセルのvlookupについて質問です 3 2023/01/05 15:15
- Excel(エクセル) エクセルで2つの表を比較して、文字列が同じだが、その行のある値が違うものを抽出したい 1 2022/10/06 21:48
- Visual Basic(VBA) Sheet1のA列にコードB列にメアド、Sheet2のB列にコード一覧とD列にメアド一覧があり、Sh 3 2022/10/19 11:57
- Visual Basic(VBA) vbaマクロについて 【1.csv】をもとに【商品.csv】に有るものを【有り.csv】として名前を 1 2023/05/18 07:58
- Visual Basic(VBA) エクセルVBA コードが同じでもファイルによって処理速度が大きく変わるのはなぜ 5 2022/11/06 21:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba 実数および実数タイプの変...
-
Excelのマクロについて教えてく...
-
VBA レジストリの値の読み方に...
-
ExcelのVBAコードについて教え...
-
Excel マクロについての相談
-
Excel VBA 定義されたプロージ...
-
Vba SelStart、SelLen教えてく...
-
エクセルのマクロについて教え...
-
VBAに詳しい方教えてください。
-
VBAの質問になります メッセー...
-
ユーザーフォームに別シートか...
-
2つのマクロでチェックボックス...
-
VBA listBoxから
-
VBA初心者 Ctrl+での操作、ボタ...
-
VBA 複数条件の分岐処理の上手...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
左右の表のキー位置を合わせたい
-
VBAの質問になります Userform内で
-
Excelについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBA 定義されたプロージ...
-
Excel-VBAのmsgBox()の不思議
-
【VBA】マクロの入ったファイル...
-
VBA 複数条件の分岐処理の上手...
-
現在のブックを閉じないで、マ...
-
VBAで各列の"+"と"o"の合計数を...
-
VBAに詳しい方教えてください。
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
エクセルのマクロについて教え...
-
ユーザーフォームに別シートか...
-
エクセルのマクロについて教え...
-
ExcelVBA シート名を複数セルか...
-
エクセルのマクロについて教え...
-
VBA listBoxから
-
Excelのマクロについて教えてく...
-
エクセルのマクロについて教え...
おすすめ情報
ワークシート関数がものすごく早いですね!
この質問から若干ずれてしまうのですが、
=IF(SUMPRODUCT((Sheet1!A$2:A$5000=A2)*(Sheet1!F$2:F$5000<>""))=0,"ひとつもない","")
⇒Sheet1のA列のみかんがSheet2のA列のみかん でかつ Sheet1のF列が空白でないものを抽出
したいのです。
このIF関数とサムプロダクト関数の組み合わせをこのVBAで使用したいのですが、やりかたありますか。
迅速な対応ありがとうございます。
下記のサンプル3で
With Worksheets("Sheet2").Range("B2:B5000")
⇒ここのデータのある最終行までとする場合どうすればよいのでしょうか。
Sub Sample3()
With Worksheets("Sheet2").Range("B2:B5000")
.Formula = "=IF(COUNTIFS(Sheet1!A$2:A$5000,A2,Sheet1!F$2:F$5000,""<>""),"""",""ひとつもない"")"
.Value = .Value
End With
End Sub