┌─────>x
│0
│
│
y
将表格编辑以上述坐标标识。
当前,行列的转置其实是关于y=x的对称复制,那么,自然,我们也可能需要关于x=m,称为:水平镜像复制;或者,y=m的镜像复制,称为竖向镜像复制。
所以,转置的功能是微软加给我们的唯一选择,我希望永中创新突破!这个功能其实是镜像复制的问题。
建议:
①在选择性粘贴中的:
□转置
改为:
转置:○行列转置;○水平镜像;○竖向镜像;
本人在永中二次开发部门的“三头驴”的帮助下,完成了自动粘贴镜像复制的宏制作。对于粘贴到指定单元格也是可以在改进后优化的,但是,我根据自己的需要自动粘贴即可。即:
竖向镜像复制,自动接在所选区域下面一行,结果形成:
| 11 | 12 | 13 |
| 21 | 22 | 23 |
| 31 | 32 | 33 |
| 31 | 32 | 33 |
| 21 | 22 | 23 |
| 11 | 12 | 13 |
水平镜像复制,自动接在所选区域右边一列,结果形成:
| 11 | 12 | 13 | 13 | 12 | 11 |
| 21 | 22 | 23 | 23 | 22 | 21 |
| 31 | 32 | 33 | 33 | 32 | 31 |
还是希望永中能不能在这个方面一改微软给我们的单一选择限制!
②建议永中在粘贴成图片的时候,不要压缩降低其图片质量
我为什么有这样的需要?
因为在以永中表格编辑的时候,我把行列高宽设置成0.1cm,放大编辑有关单元格的背景,进行类似像素制图那样的操作,比如:国画画卷。所以,建议永中在粘贴成图片的时候,不要压缩降低其图片质量!!!在制作过程中,因为图形对称的大量存在,就产生了镜像复制宏的制作需求,但是本人的java水平等于零,今天中午开qq群(独立自主--龙芯+汉编+永中),并在永中二次开发部门的“三头驴”的帮助下完成了。这可是我第一个正儿八经地编辑的宏,以前vba在麻烦也可以独立完成,现在,开头难,还好有高手指教。
宏代码如下:
void jx_shuxiang()
{
Worksheet sheet = Application.getWorkbooks().getActiveWorkbook().getWorksheets().getActiveWorksheet();
/* Range range = sheet.getRange("b2:b4"); */
Range range = sheet.getActiveRange(); /* 用户选择区域 */
if(range==null)
{
return;
}
int hang_shi = range.getStartRow();/* 用户选择区域始行序数 */
int hang_zhong = range.getEndRow();/* 用户选择区域终行序数 */
int lie_shi = range.getStartColumn();/* 用户选择区域始列序数 */
int lie_zhong = range.getEndColumn();/* 用户选择区域终列序数 */
int hangshu = hang_zhong - hang_shi+1;
int lieshu = lie_zhong - lie_shi+1;
for (int i = lie_shi ;i < lie_zhong+1;i++)
{
for (int j = 0 ;j < hangshu;j++)
{
Cell cell = sheet.getCell(hang_shi+j,i);
cell.select();
cell.copy();
Cell cell = sheet.getCell(hang_zhong+hangshu-j,i);
cell.select();
cell.paste();
}
}
}
void jx_shuiping()
{
Worksheet sheet = Application.getWorkbooks().getActiveWorkbook().getWorksheets().getActiveWorksheet();
/* Range range = sheet.getRange("b2:b4"); */
Range range = sheet.getActiveRange(); /* 用户选择区域 */
if(range==null)
{
return;
}
int hang_shi = range.getStartRow();/* 用户选择区域始行序数 */
int hang_zhong = range.getEndRow();/* 用户选择区域终行序数 */
int lie_shi = range.getStartColumn();/* 用户选择区域始列序数 */
int lie_zhong = range.getEndColumn();/* 用户选择区域终列序数 */
int hangshu = hang_zhong - hang_shi+1;
int lieshu = lie_zhong - lie_shi+1;
for (int i = hang_shi ;i < hang_zhong+1;i++)
{
for (int j = 0 ;j < lieshu;j++)
{
Cell cell = sheet.getCell(i,lie_shi+j);
cell.select();
cell.copy();
Cell cell = sheet.getCell(i,lie_zhong+lieshu-j);
cell.select();
cell.paste();
}
}
}
[
本帖最后由 983mxm 于 2008-10-27 23:13 编辑 ]