[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『あるセルが参照された回数を表示したい』(みいき)
お世話になります。
分かりにくいかもしれませんが、よろしくお願いします。
あるセルが参照された回数をカウントしたいです。
マスタシートが1枚と
サブシートが複数枚存在するブックを想定しています。
(マスタシート)
A-1 犬 A-2 猫 A-3 兎
(サブシート)
わんわん (マスタシートA-1を参照) 犬(vlookupで出力) ぴょんぴょん (マスタシートA-3を参照) 兎(vlookupで出力) にゃあ (マスタシートA-2を参照) 猫(vlookupで出力) にゃん (マスタシートA-2を参照) 猫(vlookupで出力)
このようなシート構成で、似たようなサブシートが複数枚あります
このとき、マスタシート上のA-1からA-3が、全てのサブシートにおいて
何回参照されたかを、マスタシート上にそれぞれ出力したいです
それぞれのサブシートで、A-1からA-3までカウントイフで数を数え それを合計することも考えましたが
A-1からA-3までの行は状況に応じて増減する予定で さらにサブシートも適宜増えていきます
何か他に手立てがありましたら、教えていただけると幸いです
よろしくお願いします
< 使用 Excel:Office365、使用 OS:Windows10 >
マクロを使って全てのセルに書かれている数式を抜き出して、VLOOKUPの範囲指定内に含まれている場合にカウントアップするようなコードを考えるしかないように思いますよ。
実際の数式を見ないと難易度は判りませんが、VLOOKUPの引数を抜き出すだけでもかなり面倒そうに思います。 例えば、検索文字列として「A-1」という文字列が固定で埋め込まれているのか、セル参照になっていて、数式とは違うセルに「A-1」と書いてあるのか、とか。 すべての数式を見ないと、どうやるのがベストか判断が付かないので、ご自身で頑張るしかないでしょう。
(具体的には、SpecialCellsを使えば、シート内の数式のあるセル全てを選択できるので、後は該当セルを1つずつ調べて、Formulaプロパティに書かれている文字列を調べれば良さそう)
(???) 2019/12/05(木) 14:08
'新規ブックの標準モジュール Dim ms As String, fname As String, FSO As Object, wb As Workbook, sht As Worksheet, myfile As String, x As String, ctr As Long, i As Long, tot As Long ms = "マスタシート" 'マスターシートのシート名を指定 myfile = Application.GetOpenFilename(FileFilter:="Excel ファイル (*.xls; *.xlsx; *.xlsm),*.xls; *.xlsx; *.xlsm", FilterIndex:=1, Title:="調査対象ファイルを選択してください", MultiSelect:=False) If Dir(myfile) = "" Then Exit Sub Cells.ClearContents Set FSO = CreateObject("Scripting.FileSystemObject") fname = ThisWorkbook.Path & "\temp." & FSO.GetExtensionName(myfile) FSO.GetFile(myfile).Copy fname Set wb = Workbooks.Open(Filename:=fname, ReadOnly:=True) Do While wb.Sheets(ms).Range("A" & i + 1).Value <> "" x = wb.Sheets(ms).Range("A" & i + 1).Value ctr = 0 wb.Sheets(ms).Range("A" & i + 1).Delete Shift:=xlToLeft For Each sht In wb.Worksheets If sht.Name <> ms Then ctr = ctr + WorksheetFunction.CountIf(sht.Cells, "#REF!") End If Next sht ThisWorkbook.Sheets(1).Range("A" & Rows.Count).End(xlUp).Offset(1).Resize(, 2).Value = Array(x, ctr - tot & "回") tot = ctr i = i + 1 Loop wb.Close False FSO.DeleteFile fname End Sub
(mm) 2019/12/05(木) 16:24
例:Sheet1〜Sheet3 の A1:A20 の間の「犬」をカウント。
=SUMPRODUCT((T(OFFSET(INDIRECT("Sheet"&{1,2,3}&"!A1"),ROW($1:$20),0))="犬")*1) (GobGob) 2019/12/05(木) 18:48
OFFSETいらんかw
=SUMPRODUCT((T(INDIRECT("Sheet"&{1,2,3}&"!A"&ROW($1:$20)))="犬")*1) (GobGob) 2019/12/05(木) 19:00
「にゃあ」と入力されていて、なんでA2セルだと判断できるかがわかりません。
あと、結果を数えるなら、猫の数を数えとか、にゃあの数を数えればいいだけかと。
セルが参照された回数とかなんか回りくどいいいかたで、
読んでわかるようなわからないような表現かなと思います。
ホントの実例でビフォーアフターを書いた方が、
解決が早い気がします。
(まっつわん) 2019/12/06(金) 08:44
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.