The RANDARRAY function returns an array of random numbers. Users can specify the number of rows and columns to fill, minimum and maximum values, and whether to return whole numbers or decimal values. For example:
Argument
Required
Description
[rows]
N
The number of rows to be returned
[columns]
N
The number of columns to be returned
[min]
N
The minimum number you would like returned
[max]
N
The maximum number you would like returned
[whole_number]
N
Return a whole number or a decimal value: true for a whole number, false for a decimal number.
Note:
The RANDARRAY function is only valid when allowDynamicArray is true.
The RANDARRAY function will return an array, which will spill if it's the final result of a formula.
If you don't input a row or column argument, RANDARRAY will return a single value between 0 and 1.
If you don't input a minimum or maximum value argument, RANDARRAY will default to 0 and 1 respectively.
The minimum number argument must be less than the maximum number, otherwise RANDARRAY will return a #VALUE! error.
If you don't input a whole_number argument, RANDARRY will default to FALSE, or decimal value.
import { Component, NgModule, enableProdMode } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { SpreadSheetsModule } from '@mescius/spread-sheets-angular';
import GC from '@mescius/spread-sheets';
import './styles.css';
@Component({
selector: 'app-component',
templateUrl: 'src/app.component.html'
})
export class AppComponent {
spread: GC.Spread.Sheets.Workbook;
hostStyle = {
width: '100%',
height: '100%',
overflow: 'hidden',
float: 'left'
};
constructor() {
}
initSpread($event: any) {
this.spread = $event.spread;
let spread = this.spread;
spread.options.allowDynamicArray = true;
let sheet = spread.getActiveSheet();
spread.suspendPaint();
spread.suspendCalcService();
sheet.name('RANDARRAY');
sheet.defaults.colWidth = 80;
sheet.setColumnWidth(0, 20);
sheet.setColumnWidth(1, 20);
sheet.setText(0, 2, 'The RANDARRAY function allows you to generate a list of random numbers from 0 to 1 in an array. Syntax: RANDARRAY([rows],[columns])');
let row = 2;
let col = 2;
let col2 = col + 5;
let formula = 'SEQUENCE(1, 5)';
sheet.setText(row, col, formula);
sheet.setFormula(++row, col, formula);
row++;
this.applyTableStyleForRange(sheet, row + 1, col, 5, 5);
formula = 'DATE(YEAR(TODAY()), C' + row + ':G' + row +' , 1)';
let formatter = 'mmmm';
sheet.setText(row + 1, col2, ' <--- ' + formula + ' with ' + formatter);
sheet.setFormula(++row, col, formula);
sheet.getRange(row, col, 1, 5).formatter(formatter);
row++;
formula = 'RANDARRAY(4,5)';
formatter = '0.000000'
sheet.setText(row, col2, ' <--- ' + formula + ' with ' + formatter);
sheet.setFormula(row, col, formula);
sheet.getRange(row, col, 4, 5).formatter(formatter);
row += 6;
this.applyTableStyleForRange(sheet, row, col, 4, 5, { showHeader: false });
formula = 'INT(RANDARRAY(4,5)*100)';
sheet.setFormula(row, col, formula);
sheet.setText(row, col2, ' <--- ' + formula);
row += 6;
this.applyTableStyleForRange(sheet, row, col, 11, 1);
this.applyTableStyleForRange(sheet, row, col + 2, 11, 1);
sheet.setText(row - 1, col + 1, 'Random order: SORTBY(C20:C29,RANDARRAY(COUNTA(C20:C29)))');
sheet.setText(row - 1, col + 7, 'Sort range by birthday column: SORTBY(G20:H27,H20:H27)');
formula = 'SEQUENCE(10)'
sheet.setText(row, col, 'Units');
sheet.setText(row, col + 2, 'SortBy');
row++;
sheet.setFormula(row, col, formula);
formula = 'SORTBY(C20:C29,RANDARRAY(COUNTA(C20:C29)))';
sheet.setFormula(row, col + 2, formula);
col += 4;
this.applyTableStyleForRange(sheet, row - 1, col, 9, 2);
this.applyTableStyleForRange(sheet, row - 1, col + 3, 9, 2);
sheet.setArray(row - 1, col, [['Name', 'Birthday', '', 'Name', 'Birthday']]);
sheet.setArray(row, col, ["Fritz", "Xi", "Amy", "Sravan", "Tom", "Fred", "Hector", "Sal"]);
sheet.setFormula(row, col + 1, 'RANDARRAY(COUNTA(C20:C27))*40000');
sheet.setFormula(row, col + 3, 'SORTBY(G20:H27,H20:H27)');
formatter = 'mm/dd/yyyy';
sheet.getRange(row, col + 1, 8, 1).formatter(formatter);
sheet.getRange(row, col + 4, 8, 1).formatter(formatter);
spread.resumeCalcService();
spread.resumePaint();
}
applyTableStyleForRange(sheet: GC.Spread.Sheets.Worksheet, row: number, col: number, rowCount: number, colCount: number, options?: any) {
let tableName = "tmpTable";
let TableThemes = GC.Spread.Sheets.Tables.TableThemes;
// use table to help set style then remove like convert table to range in Excel
sheet.tables.add(tableName, row, col, rowCount, colCount, TableThemes.medium7, options);
sheet.tables.remove(tableName, 2 /* keep style */);
}
}
@NgModule({
imports: [BrowserModule, SpreadSheetsModule],
declarations: [AppComponent],
exports: [AppComponent],
bootstrap: [AppComponent]
})
export class AppModule {}
enableProdMode();
// Bootstrap application with hash style navigation and global services.
platformBrowserDynamic().bootstrapModule(AppModule);
<!doctype html>
<html style="height:100%;font-size:14px;">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" type="text/css" href="$DEMOROOT$/en/angular/node_modules/@mescius/spread-sheets/styles/gc.spread.sheets.excel2013white.css">
<!-- Polyfills -->
<script src="$DEMOROOT$/en/angular/node_modules/core-js/client/shim.min.js"></script>
<script src="$DEMOROOT$/en/angular/node_modules/zone.js/fesm2015/zone.min.js"></script>
<!-- SystemJS -->
<script src="$DEMOROOT$/en/angular/node_modules/systemjs/dist/system.js"></script>
<script src="systemjs.config.js"></script>
<script>
// workaround to load 'rxjs/operators' from the rxjs bundle
System.import('rxjs').then(function (m) {
System.import('@angular/compiler');
System.set(SystemJS.resolveSync('rxjs/operators'), System.newModule(m.operators));
System.import('$DEMOROOT$/en/lib/angular/license.ts');
System.import('./src/app.component');
});
</script>
</head>
<body>
<app-component></app-component>
</body>
</html>
<div class="sample-tutorial">
<gc-spread-sheets [hostStyle]="hostStyle" (workbookInitialized)="initSpread($event)">
<gc-worksheet>
</gc-worksheet>
</gc-spread-sheets>
</div>
.sample-tutorial {
position: relative;
height: 100%;
overflow: hidden;
}
body {
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
(function (global) {
System.config({
transpiler: 'ts',
typescriptOptions: {
tsconfig: true
},
meta: {
'typescript': {
"exports": "ts"
},
'*.css': { loader: 'css' }
},
paths: {
// paths serve as alias
'npm:': 'node_modules/'
},
// map tells the System loader where to look for things
map: {
'core-js': 'npm:core-js/client/shim.min.js',
'zone': 'npm:zone.js/fesm2015/zone.min.js',
'rxjs': 'npm:rxjs/dist/bundles/rxjs.umd.min.js',
'@angular/core': 'npm:@angular/core/fesm2022',
'@angular/common': 'npm:@angular/common/fesm2022/common.mjs',
'@angular/compiler': 'npm:@angular/compiler/fesm2022/compiler.mjs',
'@angular/platform-browser': 'npm:@angular/platform-browser/fesm2022/platform-browser.mjs',
'@angular/platform-browser-dynamic': 'npm:@angular/platform-browser-dynamic/fesm2022/platform-browser-dynamic.mjs',
'@angular/common/http': 'npm:@angular/common/fesm2022/http.mjs',
'@angular/router': 'npm:@angular/router/fesm2022/router.mjs',
'@angular/forms': 'npm:@angular/forms/fesm2022/forms.mjs',
'jszip': 'npm:jszip/dist/jszip.min.js',
'typescript': 'npm:typescript/lib/typescript.js',
'ts': './plugin.js',
'tslib':'npm:tslib/tslib.js',
'css': 'npm:systemjs-plugin-css/css.js',
'plugin-babel': 'npm:systemjs-plugin-babel/plugin-babel.js',
'systemjs-babel-build':'npm:systemjs-plugin-babel/systemjs-babel-browser.js',
'@mescius/spread-sheets': 'npm:@mescius/spread-sheets/index.js',
'@mescius/spread-sheets-angular': 'npm:@mescius/spread-sheets-angular/fesm2020/mescius-spread-sheets-angular.mjs',
'@grapecity/jsob-test-dependency-package/react-components': 'npm:@grapecity/jsob-test-dependency-package/react-components/index.js'
},
// packages tells the System loader how to load when no filename and/or no extension
packages: {
src: {
defaultExtension: 'ts'
},
rxjs: {
defaultExtension: 'js'
},
"node_modules": {
defaultExtension: 'js'
},
"node_modules/@angular": {
defaultExtension: 'mjs'
},
"@mescius/spread-sheets-angular": {
defaultExtension: 'mjs'
},
'@angular/core': {
defaultExtension: 'mjs',
main: 'core.mjs'
}
}
});
})(this);