[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『条件(文字の一致)にあった行の特定フィールドのデータ数のカウント』(ゴジラ)
A B C D
ぶどう うさぎ ネコ
みかん いぬ
ぶどう ゴリラ ネコ うさぎ
キウイ うさぎ ネコ
上記のような表で、A列を条件としてBからDまでのフィールドのデータの個数をカウントしたいのですが、なかなかうまくできません。
上記の例だと以下のような情報が欲しいと思っています。
ぶどう:5
みかん:1
キウイ:2
Dcountaで色々試したのですがお手上げになってしまいました。
どなたかご存知の方がおられましたらご教授のほどどうぞよろしくお願い致します。
< 使用 Excel:Excel2016mac、使用 OS:MacOSX >
A10セルから下にぶどう、みかん、キウイと入力されているとして。 B10セルに =SUMPRODUCT((A$1:A$4=A10)*(B$1:D$4<>"")) と入力して下へフィルコピーではどうか? (ねむねむ) 2018/06/06(水) 11:50
VBA ^^。。。
もっとスマートな方法は有ろうかと存じますが。 バックアップ必須! ^^;;;
Option Explicit Sub main() Dim sh01 As Worksheet, ws As Worksheet, wb As Workbook Dim i As Long, j As Long, cnt As Long, buf, rr As Range Dim y As Long, k As Long Set sh01 = Worksheets("Sheet1") sh01.Range("J1").CurrentRegion.ClearContents sh01.Copy Set wb = ActiveWorkbook Set rr = ActiveSheet.Range("A1").CurrentRegion rr.RemoveDuplicates 1, xlNo rr.Range(rr(1, 2), rr(rr.Rows.Count, rr.Columns.Count)).Clear buf = rr.SpecialCells(xlCellTypeConstants) wb.Close SaveChanges:=False Set rr = sh01.Range("A1").CurrentRegion y = 1 For i = 1 To UBound(buf, 1) For j = 1 To rr.Rows.Count If buf(i, 1) = rr(j, 1) Then For k = 2 To rr.Columns.Count If rr(j, k) <> "" Then cnt = cnt + 1 End If Next End If Next sh01.Cells(y, 10) = buf(i, 1) sh01.Cells(y, 11) = cnt cnt = 0 y = y + 1 Next End Sub (隠居じーさん) 2018/06/06(水) 13:35
Dim dic As Object, k As Variant, c As Range Set dic = CreateObject("Scripting.Dictionary") For Each c In Sheets("Sheet1").Range("A:A").SpecialCells(2) dic(c.Value) = dic(c.Value) + WorksheetFunction.CountA(c.Offset(, 1).Resize(, 3)) Next c Sheets("Sheet2").Cells.Clear Sheets("Sheet2").Range("A1").Resize(dic.Count, 2) = WorksheetFunction.Transpose(Array(dic.keys, dic.items)) End Sub (mm) 2018/06/06(水) 18:11
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.