有没有办法可以进行以下转换?
Nov-2010 1195 1175 1676 36500.5 $33,607
Dec-2010 1215 1189 1775 46866.5 $38,714
到
func loadImageArray(){
let findDataParse = PFQuery(className:"MagazineContent")
findDataParse.whereKey("objectId", equalTo: "orQfF8MmVO")
findDataParse.findObjectsInBackgroundWithBlock{
(objects: [PFObject]?, error: NSError?) -> Void in
for object in objects!{
if (error == nil) {
if let userImageFile = object.valueForKey("photo1") as? PFFile {
//let myServerImage = object["photo1"] as? PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
print("1. Found it")
self.images.append(UIImage(data:imageData!)!)
}}
if let userImageFile = object.valueForKey("photo2") as? PFFile {
//let myServerImage = object["photo1"] as? PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
print("2. Found it")
self.images.append(UIImage(data:imageData!)!)
}}
if let userImageFile = object.valueForKey("photo3") as? PFFile {
//let myServerImage = object["photo1"] as? PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
print("3. Found it")
self.images.append(UIImage(data:imageData!)!)
}}
if let userImageFile = object.valueForKey("photo4") as? PFFile {
//let myServerImage = object["photo1"] as? PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
print("4. Found it")
self.images.append(UIImage(data:imageData!)!)
}}
if let userImageFile = object.valueForKey("photo5") as? PFFile {
//let myServerImage = object["photo1"] as? PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
print("5. Found it")
self.images.append(UIImage(data:imageData!)!)
}}
if let userImageFile = object.valueForKey("photo6") as? PFFile {
//let myServerImage = object["photo1"] as? PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
print("6. Found it")
self.images.append(UIImage(data:imageData!)!)
}}
if let userImageFile = object.valueForKey("photo7") as? PFFile {
//let myServerImage = object["photo1"] as? PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
print("7. Found it")
self.images.append(UIImage(data:imageData!)!)
}}
if let userImageFile = object.valueForKey("photo8") as? PFFile {
//let myServerImage = object["photo1"] as? PFFile
userImageFile.getDataInBackgroundWithBlock {
(imageData: NSData?, error: NSError?) -> Void in
print("8. Found it")
self.images.append(UIImage(data:imageData!)!)
}}
}}}}
我必须先填空白吗?
答案 0 :(得分:1)
我假设并非每个月都有五个数字。如果是的话,你不需要任何额外的检查,你可以将一个更简单的公式粘贴到F4:I9(下面解释)。但是,如果一个月有2个值而另一个月有12个值,我的公式就有效。
如果您的原始数据位于A1:B10且您的转置标题位于E4:E5,就像电子表格的屏幕截图所示,那么您可以将其放入F4并将其复制到F4:Z10
=IF(IF(ISERROR(MATCH($E5,$A:$A,0)>MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4)-1),MATCH(9.99999999999999E+307,$B:$B)+1>=MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4),MATCH($E5,$A:$A,0)>MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4)-1),OFFSET($B$1,MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4)-2,0),"")
Gow it works:
积分位为OFFSET($B$1,MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4)-2,0)
,它根据E4中的值从某个单元格中获取值。 (这就是你要粘贴到F4:I9,如果每个月都有五个值。)但如果每个月都有不同数量的值,那就不够了。在这种情况下,我们需要知道如何阻止它获得超出我们想要的值:
如果当前行中的E中还有另一个月,我们可以使用IF(MATCH($E5,$A:$A,0)>MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4)-1,OFFSET($B$1,MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4)-2,0),"")
来选择显示一个值。
如果当前行下方的E中没有其他月份,我们可以使用IF(MATCH(9.99999999999999E+307,$B:$B)+1>=MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4),OFFSET($B$1,MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4)-2,0),"")
来选择显示值。
但是我们需要两者,所以我们必须使用if来决定使用哪一个,最后我们选择一个大的。为了清楚起见,它分布在多行中 - 您可以将其粘贴到公式栏中,但是由于换行,您无法将其直接粘贴到单元格中。
=IF(
IF(
ISERROR(MATCH($E5,$A:$A,0)>MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4)-1),
MATCH(9.99999999999999E+307,$B:$B)+1>=MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4),
MATCH($E5,$A:$A,0)>MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4)-1),
OFFSET($B$1,MATCH($E4,$A:$A,0)+COLUMN()-COLUMN($E4)-2,0),
"")
答案 1 :(得分:0)
Nov-2010
必须位于1195
之上才能使用工作表的“复制”,“粘贴特殊”,“转置”命令。 OFFSET function可以使用一些行和列数学,但这是一个易失性的¹函数,最好保留,当没有别的东西就足够了。 INDEX function提供OFFSET的非易失性替代方案。
您的样本数据在B列中为A中的每个日期整齐地提供了5个相关条目。根据我的经验,样本数据并不总是代表实际数据。您必须将每一行填充到任何一个日期可能具有关联值的最大值。
在E4:F4中作为标准公式,
'in E4
=IFERROR(INDEX(A:A,
AGGREGATE(15, 6, ROW(A$1:INDEX(A:A, MATCH(1E+99,A:A )))/SIGN(LEN(A$1:INDEX(A:A, MATCH(1E+99,A:A )))),
ROW(1:1))), "")
'in F4
=IFERROR(INDEX(INDEX($B:$B, MATCH($E4,$A:$A, 0)):INDEX($B:$B,
IFERROR(MATCH($E5,$A:$A, 0)-1, MATCH(1E+99,$B:$B ))),
COLUMN(A:A)), "")
向下填充E4,直到您从A列用完日期来检索。向右填充F4,直到达到任何日期可能具有的最大关联值,然后填充到E列中日期的范围。
¹当整个工作簿中的任何内容发生变化时,不仅在影响其结果的某些内容发生变化时,挥发性函数都会重新计算。 易失性函数的示例包括INDIRECT,OFFSET,TODAY,NOW,RAND和RANDBETWEEN。 CELL和INFO工作表函数的某些子函数也会使它们变得不稳定。