Here's a slight variation of Albert's answer in order to

- not need Dynamic in the function's first argument

- have letters like in Excel for the columns' labels

- the vertical slider is on the right

- a name of the variable is displayed on top of the panel

- smaller space between cells

- using OptionsPattern

- celtschk's improvement for not displaying slider if not needed.

The perspective of not needing Excel anymore for just viewing big tables is really appealing ...

```
integerToLetters[n_]:=
Module[{x},
x=IntegerDigits[n-1,26];
x[[;;-2]]-=1;
StringJoin@@(x/.Thread[Range[0,25]->CharacterRange["A","Z"]])
];
SetAttributes[GetSymbolName, HoldFirst];
GetSymbolName[symbol_] := ToString@HoldForm@symbol;
SetAttributes[editMatrix,HoldFirst];
Options[editMatrix]={"MaxFields"->{10,5},"ExcelColumnLabel"->True};
editMatrix[m_, OptionsPattern[]] :=
With[
{
maxrows = Min[OptionValue["MaxFields"][[1]], Length[m]],
maxcols = Min[OptionValue["MaxFields"][[2]], Length[m[[1]]]],
excelColumnLabel=OptionValue["ExcelColumnLabel"]
}
,
Interpretation[
Panel[
DynamicModule[{rowoffset = 0, coloffset = 0},
Grid[
{
{Style[GetSymbolName[m],Bold]}
,
{
Grid[
Table[
With[ {x = i, y = j},
Switch[{i, j},
{0, 0},
Spacer[0],
{0, _},
Dynamic[If[excelColumnLabel,integerToLetters[y + coloffset],y + coloffset]],
{_, 0},
Dynamic[x + rowoffset],
_,
InputField[Dynamic[m[[x + rowoffset, y + coloffset]]], FieldSize -> 7]
]
]
,
{i, 0, maxrows}, {j, 0, maxcols}
]
,
Spacings -> {0, 0}
]
,
If[Length@m>maxrows,VerticalSlider[Dynamic[rowoffset], {Length[m] - maxrows, 0, 1}]]
}
,
{If[Length@First@m>maxcols,Slider[Dynamic[coloffset], {0, Length[m[[1]]] - maxcols, 1}]]}
}
]
]
]
,
m
]
];
```

Example

```
metal = RandomReal[1, {1000, 300}];
editMatrix[metal]
```

This is great ! Thanks to you and F'x – faysou – 2012-04-04T12:40:24.360

Nice. I've added code to use sliders only when necessary. – celtschk – 2012-04-05T08:07:11.947

I've added also many small improvements below. – faysou – 2012-04-05T09:23:27.297

I've added column vector editing capability to the function. For row vectors, just (obviously) transpose it. – CHM – 2012-06-24T20:28:06.843