名前の定義によってセルに名前を付け、その名前に対してハイパーリンクを設定する方法です。
座標を指定したハイパーリンクとは異なり、対象セルの行や列が変動した場合も影響を受けずにリンクする事が可能です。
【Excel】CSVファイルをリアルタイム読み取り
VBAを利用して、随時更新されるcsvファイルをリアルタイムで読み取るプログラムを作成しました。
随時更新される売上データを題材に作成しています。
csvReadImmediately.zip
1 file(s) 34.90 KB
このエクセルファイルの作り方
①マクロを使えるようにする
「マクロを使えるようにする」を参照
②元データとするCSVファイルを用意
③読み取ったCSVを書き込むテーブルを作成
④テーブルの値を集計する任意のピボットグラフを作成
⑤集計開始をするボタンを用意
※ボタンの追加方法は「以前の記事」を参考
⑥マクロを作成する
ボタン配置時の以下の画面で「マクロ名」を「Addup_Click」として「新規作成」を押す
⑤「Microsoft Visual Basic for Applications」にて以下のコードを記載
必要に応じて「★」のついた箇所を変更
Sub Addup_Click() Call ReadCSV End Sub Function ReadCSV() '★読み込み対象ファイルの絶対パスを指定 Dim filePass As String: filePass = "C:\SalesData.csv" '★書き込みを開始する行・列を指定 Dim startRow As Integer: startRow = 2 Dim startCol As Integer: startCol = 1 '★定期実行する間隔を指定 Dim waitSec As Single: waitSec = 5 Dim targetRow As Integer: targetRow = startRow Dim targetCol As Integer: targetCol = startCol Dim rowBuf As String Dim cellBufList As Variant Open filePass For Input As #1 '全行読み込み終わるまで繰り返し Do Until EOF(1) '1行読み込み Line Input #1, rowBuf '読みこんだ1行をカンマで区切り配列化 cellBufList = Split(rowBuf, ",") '配列分繰り返し For Each cellBuf In cellBufList Cells(targetRow, targetCol).Value = cellBuf '次の列へ targetCol = targetCol + 1 Next cellBuf '次の行へ targetCol = startCol targetRow = targetRow + 1 Loop Close #1 'ピボットテーブルの更新 Dim pvt As PivotTable For Each pvt In ActiveSheet.PivotTables pvt.PivotCache.Refresh Next '待機処理 Dim Tm As Single Tm = Timer Do DoEvents Loop Until Timer > Tm + waitSec '再帰 Call ReadCSV End Function
【Excel】同率(順位重複)を考慮したランキング表
①アンケート表、集計表を作成
②アンケート表に総数行を用意
「=COUNTA(C3:C20)」と入力してG列までコピー
③アンケート表に順位行を用意
「=RANK.EQ(C21,$C$21:$G$21)」と入力してG列までコピー
④アンケート表に順位(一意)行を用意
「=IF(COUNTIF($A$23:B23,C22)>0,C22 + 1,C22)」と入力してG列までコピー
※重複を回避するため、現在地より左ですでに同じ値がある場合は+1をする
⑤集計表に順位(一意)列を用意
⑥順位(一意)を元に集計表の順位を表示
「=INDEX($C$22:$G$22,MATCH(A27,$C$23:$G$23, 0))」と入力して31行目までコピー
⑦順位(一意)を元に集計表に旅行先を表示
「=INDEX($C$2:$G$2,MATCH(A27,$C$23:$G$23,0))」と入力して31行目までコピー
⑧不要行・列を非表示