作りやすいってのはよくわからんけど

maxNumOfRow = 最大表示行数(Y方向)・1以上の定数
maxNumOfCol = 最大表示列数(X方向)・1以上の定数

numOfItem = アイテム所持数
numOfItemRow = アイテムを全て表示するために必要な行数(Y方向)

sizeOfAreaY = 縦方向のスクロールバー移動可能エリア・0以上の定数
sizeOfBarY = 縦方向のスクロールバーの大きさ

relativePosOfRow = 初期表示(全アイテム行数の一番上端にいる状態)における上端の行の位置を0とした場合の、現在表示している上端の行の位置(基本システムだと万能ウィンドウ縦スクロール位置とかそんな名前)
relativePosOfBarY = 移動可能エリア上端を0とした場合のスクロールバーの縦方向の相対画面座標

absPosOfAreaY = 移動可能エリア上端の画面座標(Y)・定数
barY = スクロールバーの上端の画面座標(Y)

として計算すると、
----------------------------------------

numOfItemRow = numOfItem / maxNumOfCol + (numOfItem % maxNumOfCol)
numOfItemRowはmaxNumOfRow未満の場合、maxNumOfRowまで引き上げる

sizeOfBarY = sizeOfAreaY * maxNumOfRow / numOfItemRow

relativePosOfBarY = relativePosOfRow * (sizeOfAreaY - sizeOfBarY) / (numOfItemRow - maxNumOfRow)
ウディタでは0除算は1除算として計算されるため、0除算の回避はしない

barY = relativePosOfBar + absPosOfAreaY

----------------------------------------
だいたいこんな感じで計算できる